introspection/respond_to_no_parens.rb
tests/_examples/introspection/respond_to_no_parens.rb in the metorex repository.
class Vault
def open_door
end
def hidden
end
private :hidden
def guarded
end
protected :guarded
end
vault = Vault.new
puts vault.respond_to? :open_door
puts vault.respond_to? :hidden
puts vault.respond_to?(:hidden, true)
puts vault.respond_to? :guarded
puts vault.respond_to?(:guarded, true)
puts vault.respond_to? :nothing_here
puts vault.respond_to? "open_door"
class Sealed
class << self
private :new
end
end
puts Sealed.respond_to? :new
puts Sealed.respond_to?(:new, false)
puts Sealed.respond_to?(:new, true)
begin
Sealed.new
rescue NoMethodError => error
puts "#{error.class}: #{error.message}"
end
puts Vault.respond_to? :new
puts Vault.respond_to? :instance_methods
class Named
def to_str
"open_door"
end
end
puts vault.respond_to? Named.new
begin
vault.respond_to? 42
rescue TypeError => error
puts "#{error.class}: #{error.message}"
end
Output:
true
false
true
false
true
false
true
false
false
true
NoMethodError: private method 'new' called for class Sealed
true
true
true
TypeError: 42 is not a symbol nor a string