errors/message/object_mixin.rb
tests/_examples/errors/message/object_mixin.rb in the metorex repository.
# A module included into Object, as mkmf's MakeMakefile is, gives every object
# its methods, while an exception, nil, true and false keep answering their own.
module Reporting
def message(*parts) = "reported #{parts.join}"
def to_s = "reported text"
def inspect = "reported inspect"
end
include Reporting
class Unreadable < StandardError
def message = "own message"
end
class Shelf
end
error = RuntimeError.new "disk full"
p error.message
p error.to_s
p error.full_message(highlight: false).include?("disk full")
p ArgumentError.new("bad size").message
p Unreadable.new("hidden").message
p Object.new.message("a", "b")
p 5.message
p error.respond_to?(:message)
p [nil.to_s, true.to_s, false.to_s]
puts nil.inspect, true.inspect, false.inspect
puts Shelf.new.to_s
puts "#{nil}|#{true}|#{false}"
Output:
"disk full"
"disk full"
true
"bad size"
"own message"
"reported ab"
"reported "
true
["", "true", "false"]
nil
true
false
reported text
|true|false