Ich schrieb benutzerdefinierte Instrumentierung in meiner Rails-Anwendung. Ermogliche es in config/initializers/instrumentation.rb
-Datei wie folgt:Rails Klassen neu laden und 'wurde aus dem Modulbaum entfernt, ist aber noch aktiv!' ArgumentError
ActiveSupport.on_load(:action_controller) do
include FooBar::ControllerRuntime
end
Aber dies führt mich zu Fehlern A copy of FooBar::ControllerRuntime has been removed from the module tree but is still active!
. Ich kann es herausfinden, dass ich es auf zwei Arten lösen:
- Pfad Hinzufügen wo kann ‚FooBar :: ControllerRuntime
is defined to
config.autoload_one_paths` :to_prepare
Rückruf inActionController::Railtie
Zweite Lösung Aussehen definieren wie folgt:
Diese lange Einführung führt zu der Frage: welcher Weg ist besser? Mit dem ersten deaktiviere ich das Nachladen von Klassen, die auf dem gleichen Pfad liegen wie meine FooBar::ControllerRuntime
. Mit der Sekunde fühle ich nicht, dass es gut ist, mit ActionController::Railtie
zu verwirren. Richtig wissen ActionController::Railtie
hat nicht definiert to_prepare
aber was passiert, wenn in der nächsten Version wird es haben?