Самый простой способ сбросить базу данных Heroku для использования в локальном seed.rb?

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

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

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

Обновление:

Основываясь на проницательном ответе от dB', я могу рассмотреть возможность локального использования PGSQL. Однако меня все еще интересует аспект seed.rb вопроса, есть ли способ сделать это легко.


person user456584    schedule 08.02.2013    source источник
comment
Этот драгоценный камень выглядит так, как будто он легко делает то, что вам нужно. Если вам нужно использовать Rails для загрузки ваших данных, вы также можете подумать о том, чтобы просто написать rake-задачи для дампа/загрузки базы данных (seeds.rb может даже их запускать). Если у вас есть значительный объем данных, это будет намного быстрее, и вы избегаете таких вещей, как ловушки наблюдателя (например, скажем, создание пользователей отправляет электронное письмо).   -  person numbers1311407    schedule 08.02.2013


Ответы (2)


Есть несколько способов сделать это. @dB' описал один из них — использование надстройки PG Backups для экспорта базы данных. . Это отличные варианты, но они включают в себя несколько (тривиальных) ручных команд.

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

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

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

Есть пара опций, которые вы также можете установить. Подробнее см. в мой отчет.

Надеюсь, это поможет! И да, пожалуйста, используйте ту же базу данных во время разработки, что и в рабочей среде.

person Ryan Daigle    schedule 15.02.2013
comment
Исходящие ссылки запрашивают установку браузера. - person jrhicks; 29.06.2020
comment
Этот проект устарел и больше не поддерживается. - person jrhicks; 29.06.2020

Не уверен, что это то, что вы ищете, но пробовали ли вы скопировать базу данных на локальный компьютер с помощью pgbackups:capture и pg_restore? Этот подход не использует seed.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

(Этот код скопирован из объяснения в центре разработки Heroku. )

person dB'    schedule 08.02.2013
comment
Будет ли это работать, если локальная БД не является PostgreSQL (например, SQLite)? - person user456584; 09.02.2013
comment
Нет, не будет. (Хотя возможность сделать это — одна из многих веских причин для перехода на PGSQL на вашей машине разработки.) - person dB'; 09.02.2013