10 minut przejścia z lokalnego SQLite do postgresu Heroku
-- aktualizuje lokalnego programistę do postgresu po drodze --
Zakłada się, że masz programistyczną bazę danych w sqlite i chcesz przenieść strukturę i dane do heroku. Najpierw zmienisz swoje lokalne środowisko na postgres, a następnie przeniesiesz je w górę.
Dlaczego zmieniać? Zawsze powinieneś mieć swoje środowisko programistyczne, które odzwierciedla twoje środowisko produkcyjne. Korzystanie z Postgresa jest domyślne w heroku.
Musisz najpierw zainstalować i skonfigurować Postgres lokalnie z użytkownikiem, który ma Twoją nazwę użytkownika
Potrzebne oprogramowanie:postgresql, pgloader, heroku-cli
Kroki
Przejdź z SQLite do Postgres w swoim środowisku deweloperskim
- zainstaluj heroku / pgloader / postgres i upewnij się, że postgresql jest uruchomiony w twoim systemie
- backup sqlite - skopiuj development.sql do development_old.sql
- dodaj
gem 'pg'
do głównej sekcji pliku Gemfile - Zainstaluj pakiet
- zaktualizuj plik config/database.yml (patrz przykład poniżej)
- bab danych prowizji:konfiguracja
- cd [główna aplikacja]
- załaduj bazę danych postgresa danymi -
pgloader ./db/development.sqlite3 postgresql:///[name of postgres dev db]
- usuń
gem 'sqlite3'
- Zainstaluj pakiet
- serwer startowy -
rails server
- przetestuj, odwiedzając aplikację na localhost:3000
Skonfiguruj nową aplikację w heroku
Postępuj zgodnie z tymi instrukcjami z heroku
Przenieś dane do heroku
- znajdź informacje o bazie danych heroku —
heroku pg:info
- skasuj i zresetuj zdalną bazę danych —
heroku pg:reset DATABASE_URL --app [name of app]
- prześlij dane lokalne do heroku —
heroku pg:push [name of postgres dev db] DATABASE_URL --app [name of app]
UWAGA:jeśli ta baza danych ma więcej niż 10 tys. wierszy, konieczne będzie również uaktualnienie do warstwy hobbystycznej w heroku
Aktualizacja Heroku do podstawowego poziomu Hobby
- utwórz nowy poziom – `heroku addons:create heroku-postgresql:hobby-basic --app [nazwa aplikacji]
- pobierz nowy adres URL bazy danych —
heroku pg:info
- włącz konserwację —
heroku maintenance:on --app [name of app]
- Kopiuj dane —
heroku pg:copy DATABASE_URL [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- Promuj nową bazę danych —
heroku pg:promote [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- wyłącz konserwację
- przetestuj, odwiedzając aplikację heroku
W przypadku napotkania problemów lub przypadków skrajnych, oto kilka pomocnych zasobów.
Zasoby:
- https://pgloader.io
- dokumentacja instalacji Postgres
- instalacja nowych szyn heroku
- informacje o CLI Heroku
- za pomocą 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]