diff options
Diffstat (limited to 'lib/delegate.rb')
-rw-r--r-- | lib/delegate.rb | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/delegate.rb b/lib/delegate.rb index d6fb90bdbf..a1fded6425 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -422,6 +422,21 @@ def DelegateClass(superclass, &block) klass.define_singleton_method :protected_instance_methods do |all=true| super(all) | superclass.protected_instance_methods end + klass.define_singleton_method :instance_methods do |all=true| + super(all) | superclass.instance_methods + end + klass.define_singleton_method :public_instance_method do |name| + super(name) + rescue NameError + raise unless self.public_instance_methods.include?(name) + superclass.public_instance_method(name) + end + klass.define_singleton_method :instance_method do |name| + super(name) + rescue NameError + raise unless self.instance_methods.include?(name) + superclass.instance_method(name) + end klass.module_eval(&block) if block return klass end |