From: patrick hanevold Date: 2012-01-07T07:24:44+09:00 Subject: [ruby-core:41953] [ruby-trunk - Bug #5857] no block given with redefined method although block given 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
': no block given (yield) (LocalJumpError) from test.rb:30:in `
' -- http://redmine.ruby-lang.org