在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