Как заполнить производственную базу данных (героку) данными разработки? (Rails) - PullRequest
6 голосов
/ 24 марта 2012

heroku run rake db:migrate прекрасно работает для изменения структуры производственной базы данных:

Migrating to CreateUsers (20120318090252)
Migrating to AddIndexToUsersEmail (20120319191315)
Migrating to AddPasswordDigestToUsers (20120319194632)
Migrating to AddRememberTokenToUsers (20120323142854)

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

Это нормально, или есть способ сделать так, чтобы две базы данных совпали?

Заранее спасибо.

Ответы [ 2 ]

10 голосов
/ 24 марта 2012

Это нормальное поведение. rake db:migrate только создаст вашу структуру базы данных. Если вы хотите дублировать данные, которые вы уже разрабатывали на Heroku, используйте команду heroku db:push или просто используйте seed.rb, если вы хотите инициализировать базу данных с некоторыми фиксированными записями.

6 голосов
/ 24 марта 2012

Миграции могут обрабатывать как структуру (схему), так и данные, но, как только вы переходите, предполагается, что в большинстве случаев ваши производственные данные являются каноническим источником информации. Если есть данные, необходимые для настройки базы данных, например, такие как списки («Mastercard, Visa, Amex») или данные начальной загрузки (например, настройка пользователя с правами администратора), это может быть указано в файле «seed .rb». который создает копию базы данных (схемы и содержимого) и автоматически применяет ее - как правило, это одноразовая вещь.

(В другом направлении - копирование рабочей базы данных в QA или экземпляры разработки является распространенным случаем. Сначала вы можете подумать: Rails должен это делать. Но копирование типичного Производственная база данных может быть сопряжена с проблемами. Наиболее важным является то, что копирование производственной базы данных, содержащей информацию о пользователе, представляет значительную угрозу безопасности; любая операция копирования должна как минимум сделать пользователей анонимными. Вторая проблема - это просто размер базы данных: производственная база данных часто полезны или даже необходимы для воспроизведения реальных проблем с производительностью или других крайних случаев, но любая большая база данных может занять много времени для репликации и сильно зависит как от конкретной базы данных, которую вы используете, так и от разрешений)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...