From: "mame (Yusuke Endoh)" Date: 2012-05-21T20:12:08+09:00 Subject: [ruby-core:45164] [ruby-trunk - Feature #6452] Allow extend to override class methods Issue #6452 has been updated by mame (Yusuke Endoh). Hello, 2012/5/19 rosenfeld (Rodrigo Rosenfeld Rosas) : > 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 ---------------------------------------- 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/