PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment déplacer mon application rails existante sur heroku ? (sqlite à postgres)

10 minutes pour passer d'un SQLite local à un Heroku Postgres

-- met à jour votre développeur local vers postgres en cours de route --

Cela suppose que vous disposez d'une base de données de développement dans sqlite et que vous souhaitez déplacer la structure et les données vers heroku. Vous allez d'abord changer votre environnement local en postgres, puis tout déplacer vers le haut.

Pourquoi changer? Votre environnement de développement doit toujours refléter votre environnement de production. L'utilisation de Postgres est la valeur par défaut sur heroku.

Vous devrez d'abord installer et configurer Postgres localement avec un utilisateur qui a votre nom d'utilisateur

Logiciel nécessaire :postgresql, pgloader, heroku-cli

Étapes

Passez de SQLite à Postgres dans votre environnement de développement

  1. installez heroku / pgloader / postgres et assurez-vous que postgresql est en cours d'exécution sur votre système
  2. sauvegarder sqlite - copier development.sql vers development_old.sql
  3. ajouter gem 'pg' à la section principale de votre Gemfile
  4. installation groupée
  5. mettre à jour config/database.yml (voir exemple ci-dessous)
  6. rake db:setup
  7. cd [racine de l'application]
  8. charger la base de données postgres avec les données - pgloader ./db/development.sqlite3 postgresql:///[name of postgres dev db]
  9. supprimer gem 'sqlite3'
  10. installation groupée
  11. démarrer le serveur - rails server
  12. testez en visitant l'application sur localhost :3000

Configurer une nouvelle application sur heroku

Suivez ces instructions de heroku

Déplacer les données vers heroku

  1. trouver les informations de la base de données heroku - heroku pg:info
  2. effacer et réinitialiser la base de données distante - heroku pg:reset DATABASE_URL --app [name of app]
  3. pousser les données locales vers heroku - heroku pg:push [name of postgres dev db] DATABASE_URL --app [name of app]

REMARQUE :si cette base de données contient plus de 10 000 lignes, vous devrez également passer à un niveau de base sur heroku

Mise à niveau d'Heroku vers Hobby Tier Basic

  1. créer un nouveau niveau - `heroku addons:create heroku-postgresql:hobby-basic --app [nom de l'application]
  2. obtenir la nouvelle URL de la base de données - heroku pg:info
  3. activer la maintenance - heroku maintenance:on --app [name of app]
  4. copier les données - heroku pg:copy DATABASE_URL [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
  5. promote new db - heroku pg:promote [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
  6. désactiver la maintenance
  7. testez en visitant l'application heroku

Si vous rencontrez des problèmes ou des cas extrêmes, voici quelques ressources pour vous aider.

Ressources :

  • https://pgloader.io
  • docs d'installation de postgres
  • installation de nouveaux rails heroku
  • infos heroku cli
  • en utilisant le heroku cli

database_sample.yml

default: &default
  adapter: postgresql
  encoding: unicode
  host: localhost
  port: 5432
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: [name of app]_dev

test:
  <<: *default
  database: [name of app]_test

staging:
  <<: *default
  database: [name of app]

production:
  <<: *default
  database: [name of app]