Time expiration code

I want to create a simple one-line function (to be used by a
before_filter) that expires the session[:updated_at] data after twenty
minutes.

To be honest, if I knew Ruby a little more I wouldn’t be asking this
question, but exactly how does the addition and the subtraction of
Time work in Rails? Are they treated as time variables, or integer
variables of some form?

Would something like this work?

private
def expire_session
session[:updated_at]=nil if Time.now-session[:updated_at]<20.minutes
end

Hi –

On Mon, 20 Aug 2007, Taro wrote:

Would something like this work?

private
def expire_session
session[:updated_at]=nil if Time.now-session[:updated_at]<20.minutes

I think you want > rather than <.

end

You can always try these things in the application console (not
regular irb, because a lot of stuff like “minutes” requires
ActiveSupport [which you can load in irb, but it’s easier to use the
Rails console]):

update = Time.now; until Time.now - update > 5.seconds;
?> puts “waiting…”; sleep 1; end; puts “done”
waiting…
waiting…
waiting…
waiting…
waiting…
done

I think there are plugins that do more fine-grained and featureful
observing for you, but anyway, that’s the basic idea.

David

I think you want > rather than <.

end

Whoops, yes you’re right about that. Regardless, if Time.now-
session[:updated_at] works, than I really have nothing to worry about.