module ActionControllerTweaks::Session
Constants
- RESERVED_SESSION_KEYS
- VALID_OPTION_KEYS
Public Instance Methods
_delete_expired_session_key(key, expire_at_str)
click to toggle source
# File lib/action_controller_tweaks/session.rb, line 109 def _delete_expired_session_key(key, expire_at_str) if Time.now > Time.parse(expire_at_str.to_s) session.delete(key) session_keys_to_expire.delete(key) end rescue # Parse error # Let"s expire it to be safe session.delete(key) session_keys_to_expire.delete(key) end
_delete_expired_session_keys()
click to toggle source
# File lib/action_controller_tweaks/session.rb, line 102 def _delete_expired_session_keys # Remove keys that are expired session_keys_to_expire.each do |key, expire_at_str| _delete_expired_session_key(key, expire_at_str) end end
_new_session_keys_to_expire(key, options = {})
click to toggle source
# File lib/action_controller_tweaks/session.rb, line 130 def _new_session_keys_to_expire(key, options = {}) options.symbolize_keys! result = session_keys_to_expire expires_in = OptionProcessor.extract_expires_in(options) expires_at = OptionProcessor.extract_expires_at(options) if [expires_in, expires_at].any? result[key] = expires_in ? expires_in.seconds.from_now : expires_at end result end
session_keys_to_expire()
click to toggle source
# File lib/action_controller_tweaks/session.rb, line 121 def session_keys_to_expire # Check whether session key is a hash to prevent exception unless session[:session_keys_to_expire].is_a?(Hash) session[:session_keys_to_expire] = {} end session[:session_keys_to_expire] end
set_session(key, value, options = {})
click to toggle source
Set session just like `session = value` but accept some options about expiry
@option expires_in [Integer]
How long from now should the session value be expired
@option expire_in [Integer]
same as `expires_in`
@option expires_at [Integer]
What time should the session value be expired (using a time in the past would expire at next request)
@option expire_at [Integer]
same as `expires_at`
# File lib/action_controller_tweaks/session.rb, line 74 def set_session(key, value, options = {}) if RESERVED_SESSION_KEYS.include?(key.to_s) fail Errors::ReservedSessionKeyConflict.new, "you are trying to set #{value} to #{key}, "\ "but reserved by ActionControllerTweaks::Session" end session[key] = value session[:session_keys_to_expire] = _new_session_keys_to_expire(key, options) end
set_session_with_expiry(key, value, options = {})
click to toggle source
set value in session just like `set_session`, but checked option keys
@raise [ActionControllerTweaks::Session::Errors::InvalidOptionKeys]
# File lib/action_controller_tweaks/session.rb, line 89 def set_session_with_expiry(key, value, options = {}) option_keys = options.symbolize_keys.keys required_option_key_present = option_keys.any? do |k| VALID_OPTION_KEYS.include?(k) end invalid_option_key_absent = (option_keys - VALID_OPTION_KEYS.dup).empty? unless required_option_key_present && invalid_option_key_absent fail ActionControllerTweaks::Session::Errors::InvalidOptionKeys end set_session(key, value, options) end