Feature #12721
closedpublic_module_function
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.
Updated by nobu (Nobuyoshi Nakada) over 8 years ago
- Description updated (diff)
class Bar
include Foo
public :hi
end
Updated by jwmittag (Jörg W Mittag) over 8 years ago
If module_function
returned its argument(s), we could write
module Foo
public module_function def hi
puts 'hi from method hi() in module Foo'
end
end
But I'm not sure that's worth it. The whole point of "functions" is that they don't have receiver! Why would you want to call them with one?
Updated by matz (Yukihiro Matsumoto) about 8 years ago
- Status changed from Open to Rejected
I understand your proposal, but I don't see what it is for.
Do you have any no-artificial use-case for this feature?
If you come up with real-world use-case, please re-open the issue.
Matz.