From: "headius (Charles Nutter)" Date: 2012-11-17T01:31:15+09:00 Subject: [ruby-core:49440] [Ruby 1.8 - Bug #5926] Procs created by Method#to_proc do not pass block through. Issue #5926 has been updated by headius (Charles Nutter). This should be fixed (if 1.8 is still open for fixes) or closed (if it is not). ---------------------------------------- Bug #5926: Procs created by Method#to_proc do not pass block through. https://bugs.ruby-lang.org/issues/5926#change-32977 Author: headius (Charles Nutter) Status: Open Priority: Normal Assignee: Category: core Target version: ruby -v: ruby 1.8.7 (2011-12-28 patchlevel 357) [i686-darwin10.8.0] The Proc object you get back from a Method on which you have called to_proc does not appear to pass blocks through when called. I do not see any reason why it should behave this way. system ~/projects/rubyspec $ rvm 1.8.7 do ruby -v -e "def foo; yield; end; method(:foo).to_proc.call {puts 'ok'}" ruby 1.8.7 (2011-12-28 patchlevel 357) [i686-darwin10.8.0] -e:1:in `foo': no block given (LocalJumpError) from -e:1:in `to_proc' from -e:1:in `call' from -e:1 system ~/projects/rubyspec $ rvm 1.9.3 do ruby -v -e "def foo; yield; end; method(:foo).to_proc.call {puts 'ok'}" ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0] ok system ~/projects/rubyspec $ rvm 1.9.2 do ruby -v -e "def foo; yield; end; method(:foo).to_proc.call {puts 'ok'}" ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0] ok Rubinius already implements it the 1.9 way in both 1.8 and 1.9 modes, and JRuby will do so from version 1.6.6 on. -- http://bugs.ruby-lang.org/