Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

39 lines (26 sloc) 0.779 kb
= 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>
Jump to Line
Something went wrong with that request. Please try again.