#{} – string enterpolation
! – методы заканчивающиеся на ! замещают результат оперируемой переменной (gsub!)
!! – конвертация значения в boolean (true/false)
def is_ip?(ip)
!!IPAddr.new(ip) rescue false
end
? – методы заканчивающиеся на ? генерируют (обычно) boolean результат (include?)