Skip to content

lsegal/force_bind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

= force_bind

Adds UnboundMethod#force_bind to bind an unbound method to class (or any object of any type).
It basically bypasses the argument type checking that #bind has.

== Requirements

* Ruby 1.9.1 or greater (does not work in Ruby 1.8.x)

== Example

Bind an instance method to its class (making it act like a class method):

  class Foo
    def bar
      puts "I'm inside #{self}"
    end
  end
  
  Foo.new.bar
  #=> "I'm inside #<Foo:0x123456>"
  
  meth = Foo.instance_method(:bar).force_bind(Foo)
  meth.call
  #=> "I'm inside Foo"
    
You can also use this to rebind the instance method of any object to any
other object:

  class A
    def foo; self end
  end
  
  class B; end
  
  meth = A.instance_method(:foo).force_bind(B.new)
  meth.call
  #=> #<B:0x123456>

About

Adds UnboundMethod#bind_class to bind an UnboundMethod to a class.

Resources

Stars

Watchers

Forks

Packages

No packages published