Hasta cierto punto, puedes reemplazar/extender la lógica en clases existentes. Esta podría ser una opción para extender el plugin incluido. Escribirías un nuevo plugin que simplemente añada la lógica modificada. Usando module prepend (Ruby Modules: include vs extend vs prepend - DEV Community).
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"
# haz algo personalizado
else
# esto llamará a la lógica original
super(f00, bar)
end
end
end
end
after_initialize do
SomeClass.prepend(MyOverridingPlugin::SomeClassOverrides)
end
Usé este constructor para limitar algunos controladores bajo ciertas condiciones.