10 Minuti Passa da SQLite locale a Heroku Postgres
-- aggiorna il tuo sviluppo locale a postgres lungo il percorso --
Questo presuppone che tu abbia un database di sviluppo in sqlite e desideri spostare la struttura e i dati su heroku. Prima cambierai il tuo ambiente locale in postgres, quindi sposterai tutto in alto.
Perché cambiare? Dovresti sempre fare in modo che il tuo ambiente di sviluppo rispecchi il tuo ambiente di produzione. L'uso di Postgres è l'impostazione predefinita su heroku.
Dovrai prima installare e configurare Postgres in locale con un utente che ha il tuo nome utente
Software necessario:postgresql, pgloader, heroku-cli
Passaggi
Sposta da SQLite a Postgres nel tuo ambiente di sviluppo
- installa heroku / pgloader / postgres e assicurati che postgresql sia in esecuzione sul tuo sistema
- backup di sqlite:copia development.sql in development_old.sql
- aggiungi
gem 'pg'
alla sezione principale del tuo Gemfile - installazione in bundle
- aggiorna config/database.yml (vedi esempio sotto)
- rake db:setup
- cd [radice dell'applicazione]
- carica postgres db con i dati -
pgloader ./db/development.sqlite3 postgresql:///[name of postgres dev db]
- rimuovi
gem 'sqlite3'
- installazione in bundle
- server di avvio -
rails server
- prova visitando l'app su localhost:3000
Configura una nuova app su heroku
Segui queste istruzioni di heroku
Sposta i dati in heroku
- trova informazioni sul db di heroku -
heroku pg:info
- cancella e ripristina il db remoto -
heroku pg:reset DATABASE_URL --app [name of app]
- push dei dati locali in heroku -
heroku pg:push [name of postgres dev db] DATABASE_URL --app [name of app]
NOTA:se il database ha più di 10.000 righe, dovrai anche eseguire l'upgrade a un livello base hobby su heroku
Aggiornamento di Heroku al livello Hobby Base
- crea nuovo livello - `componenti aggiuntivi di heroku:create heroku-postgresql:hobby-basic --app [nome dell'app]
- ottieni il nuovo URL del database -
heroku pg:info
- attiva manutenzione -
heroku maintenance:on --app [name of app]
- copia dati -
heroku pg:copy DATABASE_URL [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- promozione nuovo db -
heroku pg:promote [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- disattiva la manutenzione
- prova visitando l'app heroku
In caso di problemi o casi limite, ecco alcune risorse per aiutarti.
Risorse:
- https://pgloader.io
- Documenti di installazione di Postgres
- Installazione dei nuovi binari di Heroku
- informazioni sul cli di heroku
- usando il cli heroku
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]