重新加载rails初始化程序
在application.rb中,我有
config.autoload_paths += %W(#{config.root}/lib
所以当我在lib下修改一个类时,我的代码会重新加载。
但是,当我尝试将配置/初始化器添加到自动加载时,我注意到我的代码没有更新。
如果我正在为字符串类编写扩展,每次修改代码时都必须重新启动rails。
请指教?
初始化程序仅在启动rails时加载(并且从不重新加载)。 在修改config/initializers
您将每次都重新启动rails。
当然,您可以确保您的代码在/lib
定义,因此您仍然可以使用您的测试套件确保它的工作正常。
例如在lib/speaker.rb
写
module Speaker def speak puts "Ahum, listen: #{self.to_s}" end end
然后在您的初始化程序中,您可以执行类似的操作
class String include Speaker end
虽然这只会在启动轨道时加载,但您可以更轻松地开发和测试模块。
希望这可以帮助。
启动rails服务器时,初始化程序文件仅加载一次。 更改初始值时重新启动服务器。 有关详细信息,请参阅导轨初始化指南 。
更改时自动重新加载“lib”
您可以自动重新加载lib文件。 更改链接自动加载和重新加载lib目录
在配置Rails应用程序中: config.reload_classes_only_on_change
仅在跟踪的文件发生更改时启用或禁用类的重新加载。 默认情况下,跟踪自动加载路径上的所有内容并设置为true。 如果config.cache_classes
为true,则忽略此选项。