oop/public_instance_method_parens.rb

tests/_examples/oop/public_instance_method_parens.rb in the metorex repository.

module Base
  def open_method
  end

  protected

  def guarded
  end

  private

  def hidden
  end
end

module Layer
  include(Base)

  def layer_method
  end
end

from_base = Layer.public_instance_method(:open_method)
puts(from_base.owner.inspect)
puts((from_base.owner == Base).inspect)

from_layer = Layer.public_instance_method(:layer_method)
puts((from_layer.owner == Layer).inspect)
puts((Base.public_instance_method("open_method") == Base.public_instance_method(:open_method)).inspect)

[:guarded, :hidden, :missing].each do |name|
  begin
    Base.public_instance_method(name)
  rescue NameError => error
    puts "#{name}: #{error.name.inspect}"
  end
end

begin
  Module.new.public_instance_method(nil)
rescue TypeError => error
  puts(error.message)
end

puts(Module.new.method(:public_instance_method).arity.inspect)

Output:

Base
true
true
true
guarded: :guarded
hidden: :hidden
missing: :missing
nil is not a symbol nor a string
1