일정 수준까지 기존 클래스의 로직을 대체하거나 확장할 수 있습니다. 이는 번들된 플러그인을 확장하는 하나의 방법이 될 수 있습니다. 수정된 로직만 추가하는 새로운 플러그인을 작성하면 됩니다. 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"
# do something custom
else
# this will call the original logic
super(f00, bar)
end
end
end
end
after_initialize do
SomeClass.prepend(MyOverridingPlugin::SomeClassOverrides)
end
저는 이 구성 방법을 사용하여 특정 조건에서 일부 컨트롤러를 제한했습니다.