Как запустить мой код ruby ​​после запуска сервера Rails? - PullRequest
26 голосов
/ 17 декабря 2011

Я пытался:

after_initialize do
  #code
end

Но: (документация)

Некоторые части вашего приложения, особенно наблюдатели и маршрутизация, еще не настроены в точке, гдеблок after_initialize вызывается.

Мне нужен маршрут и логгер в моем коде

Есть идеи?

Ответы [ 3 ]

27 голосов
/ 17 декабря 2011

См. Раздел 3.1 из http://guides.rubyonrails.org/configuring.html

Я полагаю, вы бы поместили этот код в config / application.rb

config.after_initialize do
    # ....
end

# config.after_initialize takes a block which will be run after Rails has finished initializing the application. 
# That includes the initialization of the framework itself

Также http://guides.rubyonrails.org/initialization.html

12 голосов
/ 08 июня 2017

ответ @ house9 является правильным, как указано в комментариях, он также будет выполняться при запуске задач rake, консоли и т. Д. Я использовал следующее, чтобы распознать, когда сервер фактически выполнялся:

# application.rb
if defined?(Rails::Server)
  config.after_initialize do
    # Do stuff here
  end
end
4 голосов
/ 02 января 2012

Другой вариант - создать собственный инициализатор.Это просто файл ruby, который находится в config / initializer / и выполняется точно по событию "on_server_start":)

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