Issue #12721 has been reported by Robert A. Heiler.

----------------------------------------
Feature #12721: public_module_function
https://bugs.ruby-lang.org/issues/12721

* Author: Robert A. Heiler
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
Hello ruby core,

This is about 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:

    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 but that
works as a public method instead? So that the last example,
Bar.new.hi, would also work?

Something like 

  public_module_function

If I would have a public variant, I assume that I could get rid of
"def self.foo" statements in some of my modules.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>