From: nobu@... Date: 2014-07-14T08:07:17+00:00 Subject: [ruby-core:63709] [ruby-trunk - Bug #10006] instance_exec uses incorrect binding with curried proc Issue #10006 has been updated by Nobuyoshi Nakada. It may need further consideration whether `instance_exec` should affect the wrapped proc. ---------------------------------------- Bug #10006: instance_exec uses incorrect binding with curried proc https://bugs.ruby-lang.org/issues/10006#change-47760 * Author: John Ledbetter * Status: Open * Priority: Normal * Assignee: * Category: core * Target version: current: 2.2.0 * ruby -v: ruby 2.2.0dev (2014-07-02 trunk 46660) [x86_64-darwin13] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- After using `Proc#curry`, `instanve_eval`/`instance_exec` does not seem to work: ~~~ruby class Test def test_func 140 end end # => :test_func p = ->(x, y) { x + y + test_func } # => # test = Test.new # => # test.instance_exec(1, 2, &p) # => 143 curried = p.curry[1] # => # test.instance_exec(2, &curried) ~~~ ~~~ NameError: undefined local variable or method `test_func' for main:Object from (irb):6:in `block in irb_binding' from (irb):10:in `instance_exec' from (irb):10 from ./bin/irb:11:in `
' ~~~ -- https://bugs.ruby-lang.org/