Nice write-up, but no discussion of Ruby's Range class is complete without at least a mention of the venerable flip-flop!
Can you predict the output of the following?
(1..20).each do |i|
puts i if i.odd?..i.prime?
end