Issue #5731 has been reported by Masahiro Tomita.

----------------------------------------
Bug #5731: enum_for を使うと method_missing にブロックが渡されない
http://redmine.ruby-lang.org/issues/5731

Author: Masahiro Tomita
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p0 (2011-10-30) [i686-linux]


次のスクリプトを 1.9.3 で実行すると enum_for の方は block が nil になります。
1.8.7 では両方とも block が渡されました。

---------------------------------------------
class A
  def method_missing(name, *args, &block)
    p block
  end
end

a = A.new
a.hoge{|l| p l}                    # ブロックが渡される
a.enum_for(:hoge).each{|l| p l}    # ブロックが渡されない
---------------------------------------------

% /usr/local/ruby187/bin/ruby -v a.rb
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
#<Proc:0xb76dbb60 / a.rb:9>
#<Proc:0xb76db8e0 / a.rb:10>

% ruby -v a.rb
ruby 1.9.3p0 (2011-10-30) [i686-linux]
#<Proc:0x8829080 / a.rb:9>
nil

# 使い方が間違ってるだけだったらすいません



-- 
http://redmine.ruby-lang.org