Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 仅在服务器模式下向Rails 3引导过程添加初始化步骤_Ruby On Rails 3_Ruby On Rails Plugins - Fatal编程技术网

Ruby on rails 3 仅在服务器模式下向Rails 3引导过程添加初始化步骤

Ruby on rails 3 仅在服务器模式下向Rails 3引导过程添加初始化步骤,ruby-on-rails-3,ruby-on-rails-plugins,Ruby On Rails 3,Ruby On Rails Plugins,根据,如果我写了一个Rails 3插件,并且我想挂接到初始化过程中,我会写 class MyRailtie < Rails::Railtie initializer "my_railtie.configure_rails_initialization" do # some initialization behavior end end class MyRailtie

根据,如果我写了一个Rails 3插件,并且我想挂接到初始化过程中,我会写

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

但是,该初始值设定项似乎是在运行Rails
rake
任务时执行的,而不仅仅是在运行
Rails s
或类似任务时执行的。我的问题是,如何防止此块中的代码在Rails任务期间运行,而不是完全启动Rails服务器?这似乎是Rails 3插件的常见问题。

将此块添加到初始值设定项:

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

这应该适用于当前的3.0.6 rails版本。

早在我发布此问题时,就遇到了此问题。我报告了它,并通过在初始化后将代码包装到
config.after\u initialize
块中解决了它。如果Rails未初始化,则永远不会调用此块。更多信息。

Hmm,你能说更多关于
Rails::Server
是在什么情况下定义的吗?我没有看到任何插件使用这个。这很好,但它似乎不与Heroku一起工作?还有其他选择吗?我需要在我们的开发环境中使用一些东西来启动一些服务,但只有在服务器模式下运行时,通过rails源代码,当您启动rails服务器时,才会加载该对象。这对我不起作用,无论我在配置中输入了什么代码。即使在控制台模式或rake模式下,也会调用_initialize,您是否使用与中相同的样式?使用嵌套在
初始值设定项
块中的
config.after\u initialize
时,我将config.after\u initialize块放入application.rb中,但无论代码是由rails c还是rails s启动的,它似乎每次都在运行,甚至一个简单的rakeI也试图将其添加到development.rb等环境初始值设定项中,但在这种情况下,它似乎从未被调用过…:(