Feature #12721
Updated by nobu (Nobuyoshi Nakada) over 8 years ago
Hello ruby core, This is about `module_function()`. module_function(). As the documentation rightfully states, it adds a private method when included ("mixed in") into a class. The following code shows that this works: ```ruby module Foo module_function def hi puts 'hi from method hi() in module Foo' end end class Bar include Foo def test hi end end Bar.new.test # This works Bar.new.hi # This here leads to an error message "private method `hi' called" ``` I am sure that the private method by default makes sense, but I wondered in those case where I would like the above to be a public variant. Is there some functionality like `module_function` module_function but that works as a public method instead? So that the last example, `Bar.new.hi`, Bar.new.hi, would also work? Something like ```ruby public_module_function ``` If I would have a public variant, I assume that I could get rid of "`def self.foo`" "def self.foo" statements in some of my modules.