From: Nobuyoshi Nakada Date: 2012-01-08T14:14:44+09:00 Subject: [ruby-core:41976] [ruby-trunk - Bug #5857][Rejected] no block given with redefined method although block given Issue #5857 has been updated by Nobuyoshi Nakada. Status changed from Open to Rejected ruby -v changed from ruby 2.0.0dev (2012-01-07 trunk 34222) [x86_64-darwin11.2.0] to 1.9 or later =begin patrick hanevold wrote: > Please help me understand if this really is a bug or not. It seems so very like it. Not a bug. The yield calls the block passed to the code making the block. You have to use block argument instead. Mod.foo.class.send(:define_method,:yielder) do |&blk| blk.call("new hello") end =end ---------------------------------------- Bug #5857: no block given with redefined method although block given https://bugs.ruby-lang.org/issues/5857 Author: patrick hanevold Status: Rejected Priority: High Assignee: Category: core Target version: ruby -v: 1.9 or later 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