Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

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

branch: master

This branch is 0 commits ahead and 0 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README
= 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>
Something went wrong with that request. Please try again.