Я разрабатываю веб-приложение в Rails 2.3.5. Я определил модуль в папке 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.
В приведенном выше коде новый метод работает только один раз после активации сервера. Однако новый метод никогда не вызывается снова, и вызывается старый метод. Когда я перезапускаю сервер рельсов, новый метод будет вызываться только один раз.
Просьба дать мне несколько советов о том, как переопределить метод в папке lib. Спасибо вам большое заблаговременно.
Нет. Я бы хотел отделить эти файлы. любое решение? – Mojalin
Если я установил «config.cache_classes = true» в config/environment/development.rb. новый метод отлично работает каждый раз. Есть ли другие решения? – Mojalin
Файлы в config/initializers загружаются только один раз при каждой загрузке. Модели будут перезагружены по каждому запросу. Я не могу думать о других решениях. – Yanhao