Class: ActiveResourceable::Sessionable
- Inherits:
-
Module
- Object
- Module
- ActiveResourceable::Sessionable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/active_resourceable/sessionable.rb
Instance Method Summary collapse
- #included(base) ⇒ Object
-
#initialize(attrs) ⇒ Sessionable
constructor
A new instance of Sessionable.
Constructor Details
#initialize(attrs) ⇒ Sessionable
Returns a new instance of Sessionable.
4 5 6 |
# File 'app/models/concerns/active_resourceable/sessionable.rb', line 4 def initialize(attrs) @session_attrs = attrs end |
Instance Method Details
#included(base) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'app/models/concerns/active_resourceable/sessionable.rb', line 8 def included(base) session_attrs = @session_attrs base.class_eval do attr_accessor :session define_method(:session_attrs) do session_attrs end def delete_session *attrs attrs = session_attrs if attrs.empty? attrs.each do |name, opt| send(:"delete_#{name}") end end session_attrs.each do |name, opt| define_method(:"session_name_for_#{name}") do "#{self.class.name.tableize}_#{name}" end define_method(:"modified_at_session_name_for_#{name}") do "#{self.class.name.tableize}_#{name}_modified_at" end define_method(name) do raise "Session is not set" if self.session.nil? is_expired = send(:"is_#{name}_expired?") is_expired ? nil : self.session[send(:"session_name_for_#{name}")] end define_method(:"#{name}=") do |value| raise "Session is not set" if self.session.nil? self.session[send(:"session_name_for_#{name}")] = value self.session[send(:"modified_at_session_name_for_#{name}")] = Time.now end define_method(:"delete_#{name}") do raise "Session is not set" if self.session.nil? self.session.delete send(:"modified_at_session_name_for_#{name}") self.session.delete send(:"session_name_for_#{name}") end define_method(:"is_#{name}_expired?") do raise "Session is not set" if self.session.nil? modified_at = self.session[send(:"modified_at_session_name_for_#{name}")] (not opt[:expire_after].nil? and not modified_at.nil?) ? modified_at.to_datetime + opt[:expire_after] < Time.now : false end end end end |