2012-06-15 63 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感謝編輯 –