signals/signame_parens.rb

tests/_examples/signals/signame_parens.rb in the metorex repository.

# `Signal.signame` answers the name a number goes by, and nil for a number no
# signal uses.
puts(Signal.signame(0))
puts(Signal.signame(Signal.list["TERM"]))
p(Signal.signame(-1))

# The name a signal goes by wins over the older spelling of it.
puts(Signal.signame(Signal.list["ABRT"]))
puts(Signal.signame(Signal.list["CHLD"]))

# `Signal.list` carries CLD alongside CHLD, at the same number.
puts(Signal.list["CLD"] == Signal.list["CHLD"])

# Anything but an Integer is asked for `to_int`.
class SignalNumber
  def to_int
    0
  end
end

puts(Signal.signame(SignalNumber.new))

begin
  Signal.signame("hello")
rescue TypeError => error
  puts(error.message)
end

class NotANumber
  def to_int
    "not an int"
  end
end

begin
  Signal.signame(NotANumber.new)
rescue TypeError => error
  puts(error.message)
end

Output:

EXIT
TERM
nil
ABRT
CHLD
true
EXIT
no implicit conversion of String into Integer
can't convert NotANumber to Integer (NotANumber#to_int gives String)