Plugins de base où une version dérivée (fork) d'un plugin fusionné était utilisée

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.

1 « J'aime »