在application.rb中,我有刷新轨初始化
config.autoload_paths += %W(#{config.root}/lib
所以,当我修改lib下的一类,我的代码被重新加载。
然而,当我尝试添加配置/初始化自动加载,我发现我的代码不会得到更新。
如果我写String类的扩展,我必须重新启动轨道每次我修改我的代码的时间。
请指教?
在application.rb中,我有刷新轨初始化
config.autoload_paths += %W(#{config.root}/lib
所以,当我修改lib下的一类,我的代码被重新加载。
然而,当我尝试添加配置/初始化自动加载,我发现我的代码不会得到更新。
如果我写String类的扩展,我必须重新启动轨道每次我修改我的代码的时间。
请指教?
初始化器启动时的轨道(永不重载)只加载。当在config/initializers
中修补时,您将每次重新启动导轨。
当然,你可以确保你的代码在/lib
定义,所以你仍然可以确保它的工作原理,使用您的测试套件。
E.g.在lib/speaker.rb
写
module Speaker
def speak
puts "Ahum, listen: #{self.to_s}"
end
end
,并在你的初始化然后你可以不喜欢
class String
include Speaker
end
的东西,而这将仍然只得到加载启动轨道的时候,你可以开发和更方便地测试你的模块。
希望这会有所帮助。
初始化程序文件被加载,只有当铁轨服务器再次起动。初始化值更改时重新启动服务器。 欲了解更多信息,请参阅导轨initialization guides。
自动重新加载上的变化
'LIB' 可以自动加载的lib文件。关注链接Autoload and Reload lib directory on change
在配置Rails应用程序中:config.reload_classes_only_on_change
只有在跟踪的文件发生更改时才启用或禁用重新加载类。默认情况下跟踪自动加载路径上的所有内容,并设置为true。如果config.cache_classes
为真,则忽略此选项。
非常感谢! – Abdo