In gewissem Maße können Sie die Logik in bestehenden Klassen ersetzen/erweitern. Dies könnte eine Option sein, um das gebündelte Plugin zu erweitern. Sie würden ein neues Plugin schreiben, das einfach die geänderte Logik hinzufügt. Verwenden Sie Modul-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"
# etwas Eigenes tun
else
# dies ruft die ursprüngliche Logik auf
super(f00, bar)
end
end
end
end
after_initialize do
SomeClass.prepend(MyOverridingPlugin::SomeClassOverrides)
end
Ich habe diesen Konstruktor verwendet, um bestimmte Controller unter bestimmten Bedingungen einzuschränken.