Добавить шаг инициализации в процесс загрузки Rails 3 только в режиме сервера - PullRequest
6 голосов
/ 22 августа 2010

Согласно http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html,, если я пишу плагин Rails 3 и хочу подключиться к процессу инициализации, я пишу

class MyRailtie < Rails::Railtie
  initializer "my_railtie.configure_rails_initialization" do
    # some initialization behavior
  end
end

Однако этот инициализатор, похоже, выполняется при запуске, например, задачи Rails rake, а не только при запуске rails s или аналогичной. Мой вопрос: как я могу предотвратить запуск моего кода в этом блоке во время задач Rails, в отличие от полной загрузки сервера Rails? Похоже, что это общая проблема с плагинами Rails 3.

Ответы [ 2 ]

4 голосов
/ 08 апреля 2011

добавить этот блок в ваш инициализатор:

if defined?(Rails::Server)
  # do something
end

это должно работать с текущей версией 3.0.6 рельсов.

0 голосов
/ 08 апреля 2011

Когда я отправил этот вопрос, Mongoid испытывал эту проблему. Я сообщил об этом здесь , и это было решено путем упаковки кода в блок config.after_initialize. Если Rails не инициализирован, то этот блок никогда не вызывается. Больше информации здесь .

...