rubyのModule体験04 – 同名のメソッドとクラスメソッドが定義された時
module内に、同名のクラスメソッドと、メソッドが定義されたとき、最終的には、最後に評価された式が優先されます。例えば
irb(main):108:0> module Mod
irb(main):109:1> def hello
irb(main):110:2> puts "hello"
irb(main):111:2> end
irb(main):112:1>
irb(main):113:1> def self.hello
irb(main):114:2> puts "world"
irb(main):115:2> end
irb(main):116:1>
irb(main):117:1> module_function :hello
irb(main):118:1>
irb(main):119:1> end
=> Mod
irb(main):120:0>
irb(main):121:0>
irb(main):122:0>
irb(main):123:0>
irb(main):124:0> Mod::hello
hello
=> nil
だったら、 ` module_function :hello` が最後に評価された式ですね。だからhelloと出力されてるのですね。