重新加载rails初始化程序

Abd*_*bdo 7 ruby-on-rails ruby-on-rails-3

在application.rb中,我有

config.autoload_paths += %W(#{config.root}/lib 
Run Code Online (Sandbox Code Playgroud)

因此,当我在lib下修改一个类时,我的代码被重新加载.

但是,当我尝试将配置/初始化器添加到自动加载时,我注意到我的代码没有更新.

如果我正在为字符串类编写扩展名,每次修改代码时都必须重新启动rails.

请指教?

nat*_*vda 8

初始化程序仅在启动rails时加载(并且从不重新加载).在修修补补时,config/initializers每次都会重新启动轨道.

当然,您可以/lib通过使用测试套件确保您的代码已定义,因此您仍然可以确保它的工作正常.

比如lib/speaker.rb

module Speaker
  def speak
    puts "Ahum, listen: #{self.to_s}"
  end
end
Run Code Online (Sandbox Code Playgroud)

然后在您的初始化程序中,您可以执行类似的操作

class String
  include Speaker
end
Run Code Online (Sandbox Code Playgroud)

虽然这只能在启动轨道时加载,但您可以更轻松地开发和测试模块.

希望这可以帮助.