0
中的模塊方法我正在Rails 2.3.5中開發一個Web應用程序。 我在lib /文件夾中定義了模塊,如下所示。(ruby on rails)如何覆蓋放在lib/
module TestModule
class Basic < ApplicationController
def show
p "module method"
end
end
end
和load_paths都在environment.rb中爲這個庫如下
Rails::Initializer.run do |config|
config.load_paths += %W[ #{RAILS_ROOT}/lib/test_module ]
end
但是在時間上,我想覆蓋上述方法沒有編輯的lib方法中描述。 因此,我把覆蓋方法放在「config/initializers/override_show.rb」中,如下所示。
require_dependency "lib/test_module/basic.rb"
module TestModule
class Basic
def show
p "new method"
end
end
end
沒有「require_dependency」,我得到一個錯誤,因爲位於LIB原來的方法/沒有被加載的文件夾,所以我把「require_dependency」重寫TestModule之前。
在上面的代碼中,新方法僅在激活服務器後才正常工作。 但是,新方法不會再被調用,並調用舊方法。 當我重新啓動rails服務器時,只會調用一次新方法。
請給我一些關於如何覆蓋lib文件夾中的方法的建議。 非常感謝您提前。
不,我想分開這些文件。任何解決方案 – Mojalin 2012-03-11 11:02:19
如果我在config/environments/development.rb中設置了「config.cache_classes = true」。新方法每次都能正常工作。還有其他解決方案嗎? – Mojalin 2012-03-11 11:40:33
config/initializers中的文件僅在每次啓動時加載一次。模型將在每個請求中重新加載。我想不出其他解決方案。 – Yanhao 2012-03-13 12:55:59