2

Я могу сбросить базу данных heroku с помощью $ heroku pgbackups:capture. Кроме того, this SO post показывает, что есть инструменты для получения базы данных и сбрасывания ее на seed.rb.Самый простой способ сбрасывать базу данных Heroku для использования в local seed.rb?

Мне интересно, есть ли простой способ объединить два процесса, эффективно сбрасывая данные из базы данных Heroku производства в локальный seeds.rb для более реалистичного тестирования разработки.

Если это возможно, то какой самый чистый способ сделать это?

Update:

На основе проницательного ответа от дБ», я могу рассмотреть возможность использования PGSQL локально. Тем не менее, меня интересует в аспекте seed.rb вопроса, есть ли способ сделать это легко.

+0

[Этот драгоценный камень] (https://github.com/zenprogrammer/seed_dump) выглядит так, как будто он будет делать то, что вам нужно. Если вам не нужно * использовать Rails для загрузки ваших данных, вы можете также рассмотреть возможность написания задач рейка для дампа/загрузки базы данных (seeds.rb может даже запустить их). Если у вас есть значительный объем данных, это будет * намного быстрее, и избегайте таких вещей, как крючки наблюдателей (например, создание пользователей отправляет электронное письмо). – numbers1311407

ответ

5

Есть несколько способов сделать такую ​​вещь. @dB 'изложил один из них - используя the PG Backups add-on to export your database. Это отличные варианты, но включает несколько (тривиальных) ручных команд.

Я бы порекомендовал использовать pg:transfer Heroku CLI plugin для передачи данных за один шаг. Под обложками все-таки происходит то же самое, что и при использовании PG Backups, но он упакован немного лучше и имеет некоторые полезные значения по умолчанию.

Из каталога вашего приложения скопируйте свою производственную базу данных локально (при условии локальной PG-памяти), установив плагин и выполните команду pg:transfer.

$ heroku plugins:install https://github.com/ddollar/heroku-pg-transfer 
$ heroku pg:transfer 

Есть несколько вариантов, которые вы можете установить. См. my writeup для более подробной информации.

Надеюсь, что это поможет! И да, пожалуйста, используйте same database during development as you do in production.

2

Не уверен, что это то, что вы ищете, но попробовали ли вы копировать базу данных на локальную машину с помощью pgbackups: capture и pg_restore? Этот подход не использует seeds.rb, но воссоздает вашу производственную базу данных на вашей локальной машине. Это выглядит примерно так.

$ heroku pgbackups:capture 
$ curl -o latest.dump `heroku pgbackups:url` 
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump 

(Этот код копируется Обильно из the explanation at the Heroku dev center.)

+0

Будет ли это работать, если локальная БД не является PostgreSQL (например, SQLite)? – user456584

+1

Нет, не будет. (Хотя возможность сделать это является одной из многих веских причин переключиться на PGSQL на вашей машине dev). –