Будет ли это работать для вас?
def in_range(hi, lo, range)
(hi-lo).abs <= range
end
in_range(5, 10, 3) #=> false
in_range(7, 10, 3) #=> true
И это довольно быстро, независимо от диапазона
puts Benchmark.measure{ 10_000.times{in_range(50_000, 1_000_000_000, 53000)} }
#=>0.000000 0.000000 0.000000 ( 0.000936)