Rails: Как запустить код при запуске сервера, но не при запуске задачи rake или консоли? - PullRequest
0 голосов
/ 12 ноября 2018

Раньше я добавлял код в файл с именем config/initializers/remote_publishers.rb, который устанавливал соединение с RabbitMQ с помощью гема Bunny при запуске сервера.

Однако теперь это также выполняется при выполнении rails c, rails g model SomeModel foo:integer, rails db:migrate и т. Д.

Для этого приложения подключение RabbitMQ имеет смысл только тогда, когда рельсы запущены с использованием rails s(erver).

Как правильно выполнить этот код условно? Есть ли способ узнать, запускается ли Rails как сервер или только как исполнитель задач?

1 Ответ

0 голосов
/ 12 ноября 2018

Какой веб-сервер вы используете? На Puma, например, вы можете использовать

on_worker_boot do
  # Establish RabbitMQ connection
end

Другой возможностью может быть проверка if defined?(Rails::Server) в инициализаторе: это должно быть верно только при работе в контексте веб-сервера.

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