Sha256: 0163e23a3500bbf5097f7f89854a999e1114ade2fdc790ae28571789d55f4b36
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
require 'rubygems' require 'action_controller' class NoCountdown < Exception; end module SessionCountdown @@default_name = "default" def countdown_run(delta, name = @@default_name) self[get_zero_key(name)] = Time.now + delta self[get_zero_delta_key(name)] = delta # save for reset end def countdown_running?(name = @@default_name) self[get_zero_key(name)] && self[get_zero_key(name)] > Time.now end def countdown_expired?(name = @@default_name) self[get_zero_key(name)] && ! countdown_running?(name) end # sanity check for existing countdown for some methods def method_missing(method, *args) insist_countdown_exists(*args) # reason for this method_missing() method = "_#{method}" respond_to?(method) ? send(method, *args) : raise(NoMethodError) end ## these methods all require a sanity check for existing countdown def _countdown_expire(name = @@default_name) self[get_zero_key(name)] = Time.now end def _countdown_restart(name = @@default_name) self[get_zero_key(name)] = Time.now + self[get_zero_delta_key(name)] end def _countdown_count(name = @@default_name) remaining = (self[get_zero_key(name)] - Time.now) (remaining > 0) ? remaining : 0 end private #~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~* def get_zero_key(name) "session_countdown:#{name}" end def get_zero_delta_key(name) "session_countdown:#{name}_delta" end def insist_countdown_exists(name = @@default_name) unless self[get_zero_key(name)] raise NoCountdown, "no session countdown named '#{name}'" end end end if Rails::VERSION::MAJOR == 2 class ActionController::Session::AbstractStore::SessionHash include SessionCountdown end else class ActionDispatch::Session::AbstractStore::SessionHash include SessionCountdown end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
session_countdown-0.2.0 | lib/session_countdown.rb |