Инструмент, который вам нужен - автозагрузка .Когда Rails перезагружается в dev, он перебирает автоматически загруженные и явно определенные «unloadable» константы и удаляет их ( watch стека управляет этим).
В главной директории lib вашего плагина, ex.lib/stacked_router.rb
, если вы заявили:
autoload Example::Middleware::StackedRouter, 'lib/middleware/stacked_router'
Я думаю, вы должны получить поведение, которое вы ищете.
Обратите внимание, что если вам не нравитсяавтозагрузка (люди утверждают, что это мешает возможности monkeypatch), вы можете пометить константу ( unloadable , затем запросить файл с помощью load
(просто использование require
не подхватит файл второй раз)time). или + load
. Это также будет загружать класс при каждом запросе в prod, так что может быть условно загружать или требовать в зависимости от env? Возможно, Autoload - лучший выбор IMO.
Обратите внимание, что я нашел фактический код Rails (не документация Rails), чтобы быть лучшим справочником для этого.