仅在服务器模式下将初始化步骤添加到Rails 3引导过程

Tre*_*ham 6 ruby-on-rails-plugins ruby-on-rails-3

根据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
Run Code Online (Sandbox Code Playgroud)

但是,这个初始化程序似乎在您运行Rails rake任务时执行,而不仅仅是在您运行rails s或类似时执行.我的问题是,如何防止在Rails任务期间运行此块中的代码,而不是完整的Rails服务器启动?这似乎是Rails 3插件的常见问题.

Tre*_*ham 0

早在我发布这个问题时,Mongoid就遇到了这个问题。我在这里报告了这个问题,通过将代码包装在一个config.after_initialize块中解决了这个问题。如果 Rails 未初始化,则永远不会调用此块。更多信息请参见此处