From: "jacknagel (Jack Nagel)" Date: 2013-04-30T00:09:37+09:00 Subject: [ruby-core:54696] [ruby-trunk - Bug #8346] If a module is included, its public instance methods behave like module functions Issue #8346 has been updated by jacknagel (Jack Nagel). alexeymuranov (Alexey Muranov) wrote: > =begin > This behavior is unexpected to me: > > module M > def f > 1 > end > end > include M Here you have included M in Object, which is why the method is now available on M itself. Object.method_defined?(:f) => true ---------------------------------------- Bug #8346: If a module is included, its public instance methods behave like module functions https://bugs.ruby-lang.org/issues/8346#change-39042 Author: alexeymuranov (Alexey Muranov) Status: Open Priority: Normal Assignee: Category: core Target version: ruby -v: 2.0.0 Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN =begin This behavior is unexpected to me: module M def f 1 end end include M M.f # => 1 After including the module (({M})), the method (({f})) becomes an instance method of the module for no apparent reason. I would expect an error (instance method not found). =end -- http://bugs.ruby-lang.org/