Plugins principales donde se utilizaba una bifurcación de un plugin fusionado

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.

1 me gusta