Plugin principali in cui veniva utilizzato un fork di un plugin unito

In una certa misura è possibile sostituire/estendere la logica nelle classi esistenti. Questa potrebbe essere un’opzione per estendere il plugin raggruppato. Si scriverebbe un nuovo plugin che aggiunge semplicemente la logica modificata. Utilizzando 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"
				# fai qualcosa di personalizzato
			else
				# questo chiamerà la logica originale
				super(f00, bar)
			end
		end
	end
end

after_initialize do
	SomeClass.prepend(MyOverridingPlugin::SomeClassOverrides)
end

Ho usato questo costruttore per limitare alcuni controller in determinate condizioni.

1 Mi Piace