Я написал специальную аппаратуру в приложении Rails. Включить его в config/initializers/instrumentation.rb
файл, например так:Rails reloading classes и 'был удален из дерева модулей, но по-прежнему активен!' ArgumentError
ActiveSupport.on_load(:action_controller) do
include FooBar::ControllerRuntime
end
Но это приводит меня к ошибкам A copy of FooBar::ControllerRuntime has been removed from the module tree but is still active!
. Я полагаю, что это то, что я могу решить двумя способами:
- Добавление путь, по которому может «FooBar :: ControllerRuntime
is defined to
config.autoload_one_paths` - Определение
:to_prepare
обратного вызова вActionController::Railtie
Второй внешний вид решения например:
config.to_prepare do
ActionController.include FooBar::ControllerRuntime
end
Это длинное введение приводит к вопросу: какой путь лучше? Сперва я отключу перезагрузку классов, которые лежат на том же пути, что и мой FooBar::ControllerRuntime
. Со вторым я не чувствую, что хорошо общаться с ActionController::Railtie
. Правильно знать ActionController::Railtie
не определил to_prepare
, но что произойдет, если в следующем выпуске будет?