oop/module_function.rb
tests/_examples/oop/module_function.rb in the metorex repository.
module Helpers
def named_form
:named
end
def other
:other
end
module_function :named_form
module_function
def toggled
:toggled
end
public
def after_public
:after_public
end
end
puts Helpers.named_form.inspect
puts Helpers.toggled.inspect
puts Helpers.respond_to?(:other).inspect
puts Helpers.respond_to?(:after_public).inspect
puts Helpers.private_instance_methods(false).sort.inspect
puts Helpers.public_methods.include?(:named_form).inspect
class Consumer
include Helpers
def call_it
named_form
end
end
puts Consumer.new.call_it.inspect
begin
Consumer.new.named_form
rescue NoMethodError
puts "NoMethodError"
end
module Base
def label
"base"
end
end
Layered = Module.new do
extend Base
module_function
def label
["layered", super]
end
end
puts Layered.label.inspect
puts Module.private_instance_methods.include?(:module_function).inspect
Output:
:named
:toggled
false
false
[:named_form, :toggled]
true
:named
NoMethodError
["layered", "base"]
true