Issue #5857 has been updated by patrick hanevold.


See this thread on stack overflow on this issue:
http://stackoverflow.com/questions/8764460/ruby-re-defined-method-with-a-yield-throws-no-block-given
----------------------------------------
Bug #5857: no block given with redefined method although block given
https://bugs.ruby-lang.org/issues/5857

Author: patrick hanevold
Status: Open
Priority: High
Assignee: 
Category: core
Target version: 
ruby -v: ruby 2.0.0dev (2012-01-07 trunk 34222) [x86_64-darwin11.2.0] 



Please help me understand if this really is a bug or not. It seems so very like it.
The second yielder gives a no block given exception on the yield, and I cant see how thats right, and it is called with a code block.

class Foo
  def yielder
    yield "hello"
  end
end

class Mod

  def initialize
    @@foo = Foo.new
  end

  def self.foo
    @@foo
  end

end

worker = Mod.new

Mod.foo.yielder do |hello|
   puts hello
end

Mod.foo.class.send(:define_method,:yielder) do
   yield "new hello"
end

Mod.foo.yielder do |hello|
   puts hello
end

Gives:

hello
test.rb:27:in `block in <main>': no block given (yield) (LocalJumpError)
    from test.rb:30:in `<main>'



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