Issue #6452 has been updated by mame (Yusuke Endoh).


Hello,

2012/5/19 rosenfeld (Rodrigo Rosenfeld Rosas) <rr.rosas / gmail.com>:
> Would you mind to explain why the current behavior is useful instead of doing what I'm proposing?

Just example:

  module GenericConnection
    def connect(domain)
      TCPSocket.open(domain)
    end
  end

  class Google
    extend GenericConnection
    def self.connect
      super("www.google.com")
    end
  end

  class Twitter
    extend GenericConnection
    def self.connect
      super("www.twitter.com")
    end
  end


> I really don't understand why it was implemented this way...

You may think so because you declared modules and methods in weird
order.
You should declare a smaller, more generic, or more independent
module first, and then a bigger one by using already-defined ones.
Do you still expect 'a2' for the following code?

  module B
    def a
      'a2'
    end
  end

  module A
    extend B
    def self.a
      'a1'
    end
  end

  p A.a #=> 'a1'

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #6452: Allow extend to override class methods
https://bugs.ruby-lang.org/issues/6452#change-26740

Author: rosenfeld (Rodrigo Rosenfeld Rosas)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: 
Target version: 3.0


```
module A
  def self.a
    'a1'
  end
end

module B
  def a
    'a2'
  end

  def b
    'b'
  end
end

A.extend B

assert A.a == 'a2' # this is the change I'm proposing - currently it is 'a1'
assert A.b == 'b'
```

Would this change be possible for 3.0?


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