From: "drbrain (Eric Hodel)" <drbrain@...7.net>
Date: 2013-02-17T13:16:17+09:00
Subject: [ruby-core:52312] [ruby-trunk - Feature #7872] `block_given?` does not work inside `define_method`


Issue #7872 has been updated by drbrain (Eric Hodel).

Tracker changed from Bug to Feature
Target version set to next minor

=begin
The behavior in 1.9:

  $ ruby19 -ve 'class C; define_method :x do p block_given? end; end; C.new.x { }' 
  ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-darwin12.2.1]
  false

Is the same as in 2.0:

  $ ruby20 -ve 'class C; define_method :x do p block_given? end; end; C.new.x { }' 
  ruby 2.0.0dev (2013-02-08 trunk 39138) [x86_64-darwin12.2.1]
  false

So I have switched it to a feature request.
=end

----------------------------------------
Feature #7872: `block_given?` does not work inside `define_method`
https://bugs.ruby-lang.org/issues/7872#change-36354

Author: alexeymuranov (Alexey Muranov)
Status: Open
Priority: Normal
Assignee: 
Category: core
Target version: next minor


=begin
Is this the expected behavior?

 define_method :try do
   block_given? ? yield : 'no block'
 end

 try { 'block' } # => "no block"

However:

 def try_again
   block_given? ? yield : 'no block'
 end

 try_again { 'block' } # => "block"

=end



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