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