(ruby on rails) как переопределить метод модуля, помещенный в lib / - PullRequest
0 голосов
/ 11 марта 2012

Я разрабатываю веб-приложение на Rails 2.3.5.Я определил модуль в папке lib / следующим образом.

module TestModule
  class Basic < ApplicationController
    def show
      p "module method"
    end
  end
end

, и пути load_path описаны в 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.Заранее большое спасибо.

1 Ответ

0 голосов
/ 11 марта 2012

Возможно ли, что вы просто добавляете код в config / initializer / override_show.rb в lib / test_module / basic.rb?

...