If you're running 1.9, you can use Date#step
in following manner:
require 'date'
t1 = DateTime.now
t2 = t1+3 # three days from now
# 0.25 being 1/4 of a day - 6 hours
p t1.step(t2, 0.25).to_a
#=>[#<DateTime: 2010-07-24T21:49:38+02:00 (7857287443636107/3200000000,1/12,2299161)>, #<DateTime: 2010-07-25T03:49:38+02:00 (2455402.57613628,1/12,2299161)>, #<DateTime: 2010-07-25T09:49:38+02:00 (2455402.82613628,1/12,2299161)>, #<DateTime: 2010-07-25T15:49:38+02:00 (2455403.07613628,1/12,2299161)>, #<DateTime: 2010-07-25T21:49:38+02:00 (2455403.32613628,1/12,2299161)>, #<DateTime: 2010-07-26T03:49:38+02:00 (2455403.57613628,1/12,2299161)>, #<DateTime: 2010-07-26T09:49:38+02:00 (2455403.82613628,1/12,2299161)>, #<DateTime: 2010-07-26T15:49:38+02:00 (2455404.07613628,1/12,2299161)>, #<DateTime: 2010-07-26T21:49:38+02:00 (2455404.32613628,1/12,2299161)>, #<DateTime: 2010-07-27T03:49:38+02:00 (2455404.57613628,1/12,2299161)>, #<DateTime: 2010-07-27T09:49:38+02:00 (2455404.82613628,1/12,2299161)>, #<DateTime: 2010-07-27T15:49:38+02:00 (2455405.07613628,1/12,2299161)>, #<DateTime: 2010-07-27T21:49:38+02:00 (2455405.32613628,1/12,2299161)>]