2009-07-11 128 views
20

在Rails中有沒有什麼方法讓ENV重新加載「lib」文件而不必重新啓動服務器?我正在使用「lib」中的一個模塊內部的一些類。但是,爲了查看我的更改,我必須每次都重新啓動服務器。我猜這是Rails打算工作的方式,但是在開發庫文件和/或插件時非常繁瑣。(Rails)重新加載「lib」文件而不必重新啓動服務器...?

當然,我正在討論這個錯誤....?

最佳

編輯1

兩個答案1 2也爲我工作。相反,我提供了來自使用該模塊的控制器的錯誤。僅供參考,我的「lib/xmlitems」目錄中有3個文件。我試圖加載該子目錄,然後我引用了「需要」所有其他文件的單個文件。我是否單獨加載所有文件?

+0

看着重複的目標,沒有一個答案特別好。由於重複項目需要在目標中回答問題,因此我打算重新開放。 – 2017-10-11 02:20:22

回答

-1
module ActsAsReloadable 
    def self.included(base) 
    ActiveSupport::Dependencies.explicitly_unloadable_constants << base.name if Rails.env == 'development' 
    end 
end 

要在您的lib/*文件中使用它,只需include ActsAsReloadableconfig/application.rb

-3

有一個更簡單的方法添加config.autoload_paths += %W(#{config.root}/lib):只需添加

config.reload_plugins = true 

到development.rb

+0

這不適合我。 – 2012-08-06 02:51:11

13

For Rails 3 and Rails 4.0,改變@ txwikinger的答案給出的指示。在您的environments/development.rb文件中,添加以下行:

ActiveSupport::Dependencies.autoload_paths << File::join(Rails.root, 'lib') 
ActiveSupport::Dependencies.explicitly_unloadable_constants << '<my modules in lib>' 
+0

當我這樣做時,我正在使用一個名爲:: Utils的模塊。當我運行我的代碼時,它給了我一個錯誤,「未初始化的常量ActionView :: CompiledTemplates :: Utils`。 – 2012-08-06 02:52:28

相關問題