If you're checking for overlap, then I'd just do
(x.include? y.first) or (x.include? y.last)
as one range will have to include at least one of the ends of the other. This is more intuitive to me than the accepted conjuction answer, though not quite as efficient as MarkusQ's limit comparison.