Dans une certaine mesure, vous pouvez remplacer/étendre la logique dans les classes existantes. Cela pourrait être une option pour étendre le plugin groupé. Vous écririez un nouveau plugin qui ajoute simplement la logique modifiée. En utilisant le module prepend.
enabled_site_setting :myoverridingplugin_enabled
module ::MyOverridingPlugin
PLUGIN_NAME = "my-overriding-plugin"
class Engine < ::Rails::Engine
engine_name MyOverridingPlugin::PLUGIN_NAME
isolate_namespace MyOverridingPlugin
end
module SomeClassOverrides
def overriding_method(foo, bar)
if foo == "something"
# faire quelque chose de personnalisé
else
# cela appellera la logique originale
super(f00, bar)
end
end
end
end
after_initialize do
SomeClass.prepend(MyOverridingPlugin::SomeClassOverrides)
end
J’ai utilisé ce constructeur pour limiter certains contrôleurs dans des conditions données.