Project

General

Profile

Actions

Feature #12721

closed

public_module_function

Added by shevegen (Robert A. Heiler) over 7 years ago. Updated over 7 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:77137]

Description

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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0