Feature #8465
Updated by nobu (Nobuyoshi Nakada) almost 12 years ago
=begin (({instance_eval})) instance_eval is a solution to evaluate a proc in the binding of another object but it is not a solution for a (({Proc})) Proc that takes arguments I propose that in order to suppor this use-case we need (({Proc#set_binding})) <#Proc>.set_binding Example: class BarFoo def foo(arg) "bar #{arg}" end def puts_a_foo Proc.new do |arg| puts self.foo(arg) end end end end class FooFoo def foo(arg) "foo #{arg}" end def foo_foo_proc Proc.new{} end end end foo_putter = BarFoo.new.puts_a_foo foo_putter.call("blah") # bar blah FooFoo.new.instance_eval(&foo_putter) #foo #<FooFoo:0x007ff0b903f9b0> foo_putter.binding.eval("puts self.foo('blah')") # bar blah FooFoo.new.foo_foo_proc.binding.eval("puts self.foo('blah')") # foo blah #I expect... foo_putter.set_binding(FooFoo.new.foo_foo_proc.binding) foo_putter.call("blah") #to output: # foo blah =end foo