Обновите информацию столбца для каждого процесса - PullRequest
0 голосов
/ 20 января 2020

После запуска миграции в приложении:

ActiveRecord::Migration.add_column :table, :column, :type

И обновление информации о столбце:

Model.reset_column_information

Похоже, что информация о столбце обновляется только для одного процесса, т.е. работника Puma или Пассажирский процесс.

Есть ли способ обновить его для каждого процесса без необходимости перезапускать процессы, как это?

touch tmp/restart.txt

1 Ответ

1 голос
/ 20 января 2020

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

Также имейте в виду, что, обходя поток миграции rails, ваш schema.rb не будет отражать состояние ваших серверов.

PS. Это похоже на проблему XY , возможно, ваша настоящая проблема связана с дизайном вашей базы данных, поэтому посмотрите на нее снова - миграции во время выполнения подсказывают неоптимальное решение.

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