Issue #5914 has been reported by Mark Somerville.

----------------------------------------
Bug #5914: Calling extend with an anonymous module requires use of parentheses
https://bugs.ruby-lang.org/issues/5914

Author: Mark Somerville
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: 2.0.0dev


=begin

Given Ruby 2.0.0dev, 1.9.3 or 1.8.7 and this code:

  class Dude
    def initialize
      extend Module.new do
        def hello
          puts "Word!"
        end
      end
    end
  end

  Dude.new.hello

No warning is given, but it does not behave how I expect and throws a NoMethodError.

However, if parentheses are used on the call to extend, things behave as expected:

  class Dude
    def initialize
      extend(Module.new do
        def hello
          puts "Word!"
        end
      end)
    end
  end

  Dude.new.hello
  => Word!

I don't understand what is happening in the first case (without parentheses). Is this a bug or a misunderstanding on my part?

=end


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