Method Decorator
Provides a way to dynamically override methods without losing original behavior.
Example
For a given class:
class SomeClass
def some_method(some_arg)
puts some_arg
end
end
MethodDecorator.decorate SomeClass, :some_method do |*args|
puts :decorated_some_method
MethodDecorator.call_original_method self, :some_method, *args
end
This call:
SomeClass.new.some_method 'some arg'
Produces this output:
decorated_some_method
some arg
Singleton Classes Support
It works too:
class SomeClass
class << self
def some_method(some_arg)
puts some_arg
end
end
end
MethodDecorator.decorate SomeClass.singleton_class, :some_method do |*args|
puts :decorated_some_method
MethodDecorator.call_original_method self, :some_method, *args
end
SomeClass.some_method 'some arg'
” alt=“Donate” />