Feature #8465
closedProc set_binding
Description
=begin
(({instance_eval})) is a solution to evaluate a proc in the binding of another object
but it is not a solution for a (({Proc})) that takes arguments
I propose that in order to suppor this use-case we need (({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
class FooFoo
def foo(arg)
"foo #{arg}"
end
def foo_foo_proc
Proc.new{}
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