From: "moll (Andri Möll)" Date: 2013-04-19T13:37:35+09:00 Subject: [ruby-core:54452] [Backport 200 - Backport #8284] Expected behavior of Module#public_class_method Issue #8284 has been updated by moll (Andri M��ll). jacknagel (Jack Nagel) wrote: > It does: That's good. Now there's only a test missing for that. :) ---------------------------------------- Backport #8284: Expected behavior of Module#public_class_method https://bugs.ruby-lang.org/issues/8284#change-38732 Author: jacknagel (Jack Nagel) Status: Assigned Priority: Normal Assignee: nagachika (Tomoyuki Chikanaga) Category: Target version: It was pointed out by Myron Marston (here: https://gist.github.com/myronmarston/5401829) that calling public_class_method on an anonymous module makes the named method public on Object, etc. Object.define_method => NoMethodError Module.new.public_class_method(:define_method) Object.define_method => ArgumentError Also of note, the same is not true when calling it on a class: Object.define_method => NoMethodError Class.new.public_class_method(:define_method) Object.define_method => NoMethodError which seems inconsistent given: Module.new.singleton_class.ancestors => [Module, Object, Kernel, BasicObject] Class.new.singleton_class.ancestors => [Class, Module, Object, Kernel, BasicObject] Is this a bug or expected behavior? If the latter, what is the correct explanation? -- http://bugs.ruby-lang.org/