Ruby on rails (RubyonRails)如何覆盖lib中的模块方法/

Ruby on rails (RubyonRails)如何覆盖lib中的模块方法/,ruby-on-rails,methods,module,overriding,Ruby On Rails,Methods,Module,Overriding,我正在Rails 2.3.5中开发一个web应用程序。 我在lib/folder中定义了如下模块 module TestModule class Basic < ApplicationController def show p "module method" end end end require_dependency "lib/test_module/basic.rb" module TestModule class Basic def

我正在Rails 2.3.5中开发一个web应用程序。 我在lib/folder中定义了如下模块

module TestModule
  class Basic < ApplicationController
    def show
      p "module method"
    end
  end
end
require_dependency "lib/test_module/basic.rb"
module TestModule
  class Basic
    def show
      p "new method"
    end
  end
end
但是暂时,我想重写上面的方法,而不编辑lib方法。 因此,我将override方法放在“config/initializers/override_show.rb”中,如下所示

module TestModule
  class Basic < ApplicationController
    def show
      p "module method"
    end
  end
end
require_dependency "lib/test_module/basic.rb"
module TestModule
  class Basic
    def show
      p "new method"
    end
  end
end
如果没有“require\u dependency”,我会得到一个错误,因为lib/folder中的原始方法没有加载,所以我在重写TestModule之前放置了“require\u dependency”

在上面的代码中,新方法仅在激活服务器后正常工作一次。 但是,新方法将不再被调用,而旧方法将被调用。 当我重新启动rails服务器时,新方法只会被调用一次

请给我一些关于如何重写lib文件夹中的方法的建议。
非常感谢。

您是否可以将config/initializers/override_show.rb中的代码附加到lib/test_module/basic.rb?

否。我想将这些文件分开。任何解决方案?如果我在config/environments/development.rb中设置“config.cache_classes=true”。新方法每次都很有效。还有其他解决方案吗?配置/初始化器中的文件在每次启动时只加载一次。模型将在每次请求时重新加载。我想不出其他解决办法。