From: "marcandre (Marc-Andre Lafortune)" Date: 2013-04-30T00:21:32+09:00 Subject: [ruby-core:54698] [ruby-trunk - Bug #8346][Rejected] If a module is included, its public instance methods behave like module functions Issue #8346 has been updated by marcandre (Marc-Andre Lafortune). Status changed from Open to Rejected jacknagel (Jack Nagel) wrote: > Here you have included M in Object, which is why the method is now available on M itself. Indeed. Another way to understand it: the include has the same effect as doing a `def foo` at the top level. You can `extend M` instead of you want to include `M` only in the global scope and not in `Object`. ---------------------------------------- Bug #8346: If a module is included, its public instance methods behave like module functions https://bugs.ruby-lang.org/issues/8346#change-39044 Author: alexeymuranov (Alexey Muranov) Status: Rejected 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/