2014-05-23 2 views
5

Недавно у меня возникла проблема, когда изменение схемы моего дБ не отражалось на Heroku PG. Я дважды проверил, что и миграция, и семя успешно завершены. То, что было еще страннее, заключалось в том, что смена схемы db отлично работала при развертывании развертывания гегем (после того же самого переноса/семени). После некоторого поиска вокруг, я узнал, что вы должны перезапустить Heroku после миграции через:Вам нужно перезапустить Heroku после каждой миграции?

heroku restart --app=app_name 

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

Нужно ли мне перезапускать героку после каждой миграции? Или это более конкретный случай?

+0

Эй, Тристан, я столкнулся именно с этой проблемой. Моя миграция отлично работала в промежуточном приложении, но Rails не заменила изменения схемы после миграции в процессе производства. Мне никогда не приходилось перезапускать динамо, и мне было любопытно, почему это было необходимо в этом случае. Вы когда-нибудь узнавали, почему перезапуск был необходим в производстве, а не в постановке? –

+0

Использовали ли вы 'трубопроводы: продвигаете', чтобы продвигать из стадии -> производство? –

ответ

10

Если вы вносите изменения в свою БД через миграцию, вам необходимо перезапустить приложение на Heroku. Когда Rails запускается в режиме производства, он кэширует схему DB. Миграции выполняются в одном отключенном процессе, о котором не знает веб-процесс. Поэтому для того, чтобы забрать изменения, вам необходимо перезапустить хотя бы ваши веб-процессы. Если ваше приложение находилось на холостом ходу при развертывании, и вы выполнили миграцию, он запустил новую схему при запуске приложения.

+1

Обновление моего предыдущего совета, вы можете запустить 'rake db: schema: cache: clear' и он работает. Проверено с помощью Rails 4. –

0

Это зависит от того, насколько я думаю. Говоря в целом, ответ NO. Если вы перезагружаете приложение локально после каждой миграции, тогда это необходимо еще, я не думаю, что это необходимо.

-1

Это не требуется, потому что при миграции мы только вносили изменения в базу данных.

1

Вам нужно получить свое приложение, чтобы получить новую миграцию. Перезапуск приложения работает отлично. Или вы можете очистить кэш схемы:

heroku run rake db:schema:cache:clear --app=app_name 
Смежные вопросы