2012-06-15 59 views
5

在application.rb中,我有刷新轨初始化

config.autoload_paths += %W(#{config.root}/lib 

所以,当我修改lib下的一类,我的代码被重新加载。

然而,当我尝试添加配置/初始化自动加载,我发现我的代码不会得到更新。

如果我写String类的扩展,我必须重新启动轨道每次我修改我的代码的时间。

请指教?

回答

5

初始化器启动时的轨道(永不重载)只加载。当在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 

的东西,而这将仍然只得到加载启动轨道的时候,你可以开发和更方便地测试你的模块。

希望这会有所帮助。

+1

非常感谢! – Abdo

3

初始化程序文件被加载,只有当铁轨服务器再次起动。初始化值更改时重新启动服务器。 欲了解更多信息,请参阅导轨initialization guides

自动重新加载上的变化

'LIB' 可以自动加载的lib文件。关注链接Autoload and Reload lib directory on change

在配置Rails应用程序中:config.reload_classes_only_on_change只有在跟踪的文件发生更改时才启用或禁用重新加载类。默认情况下跟踪自动加载路径上的所有内容,并设置为true。如果config.cache_classes为真,则忽略此选项。

+0

这就是我的问题所在;我不想重新启动服务器。我想要一个更好的方式来调试我的代码。 – Abdo

+0

(我只看到了-1;那不是我=)) – Abdo

+0

paukul感谢编辑 –