ある程度、既存のクラスのロジックを置き換えたり拡張したりできます。これはバンドルされたプラグインを拡張するオプションになるかもしれません。変更されたロジックを追加するだけの新しいプラグインを作成します。 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"
# カスタムの処理を行う
else
# オリジナルのロジックを呼び出す
super(f00, bar)
end
end
end
end
after_initialize do
SomeClass.prepend(MyOverridingPlugin::SomeClassOverrides)
end
私はこのコンストラクタを使用して、特定の条件下で一部のコントローラを制限しました。