10 минут перехода с локального SQLite на Heroku Postgres
- обновляет ваш локальный dev по пути на postgres -
Это предполагает, что у вас есть база данных для разработки в sqlite, и вы хотите переместить структуру и данные в heroku. Сначала вы измените локальную среду на postgres, а затем переместитесь вверх.
Зачем менять? У вас всегда должна быть среда разработки, отражающая вашу производственную среду. Использование Postgres по умолчанию на heroku.
Сначала вам нужно будет установить и настроить Postgres локально, используя пользователя с вашим именем пользователя
Необходимое программное обеспечение: postgresql, pgloader, heroku-cli
Steps
Переход от SQLite к Postgres в вашей среде разработки
- установите heroku / pgloader / postgres и убедитесь, что postgresql работает в вашей системе
- резервное копирование sqlite - скопировать development.sql в development_old.sql
- добавить
gem 'pg'
в основной раздел вашего Gemfile
- комплектация
- обновить config / database.yml (см. Пример ниже)
- rake db: setup
- cd [корень приложения]
- загрузить postgres db с данными -
pgloader ./db/development.sqlite3 postgresql:///[name of postgres dev db]
- удалить
gem 'sqlite3'
- комплектация
- стартовый сервер -
rails server
- тестирование путем посещения приложения на локальном хосте: 3000
Настройка нового приложения на героку
Следуйте этим инструкциям из heroku
Переместить данные в героку
- найти информацию о героине БД -
heroku pg:info
- стереть и сбросить удаленную базу данных -
heroku pg:reset DATABASE_URL --app [name of app]
- подтолкнуть локальные данные к героку -
heroku pg:push [name of postgres dev db] DATABASE_URL --app [name of app]
ПРИМЕЧАНИЕ: если в этой базе данных больше 10 тыс. Строк, вам также потребуется перейти на базовый уровень хобби на heroku
Обновление Heroku до базового уровня Hobby
- создать новый уровень - `дополнения heroku: создать heroku-postgresql: hobby-basic --app [имя приложения]
- получить новый URL базы данных -
heroku pg:info
- включить техобслуживание -
heroku maintenance:on --app [name of app]
- копировать данные -
heroku pg:copy DATABASE_URL [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- продвигать новые БД -
heroku pg:promote [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- отключить обслуживание
- тестирование, посетив приложение 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]