Class: Lusnoc::Session
Instance Attribute Summary collapse
-
#alive ⇒ Object
readonly
Returns the value of attribute alive.
-
#expired_at ⇒ Object
readonly
Returns the value of attribute expired_at.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#ttl ⇒ Object
readonly
Returns the value of attribute ttl.
Instance Method Summary collapse
- #alive!(exception_class = ExpiredError) ⇒ Object
- #alive? ⇒ Boolean
- #expired? ⇒ Boolean
-
#initialize(name, ttl: 20, &block) ⇒ Session
constructor
A new instance of Session.
- #need_renew? ⇒ Boolean
- #on_session_die(&block) ⇒ Object
- #renew ⇒ Object
- #run ⇒ Object
- #time_to_expiration ⇒ Object
Methods included from Helper
Constructor Details
#initialize(name, ttl: 20, &block) ⇒ Session
Returns a new instance of Session.
11 12 13 14 15 16 |
# File 'lib/lusnoc/session.rb', line 11 def initialize(name, ttl: 20, &block) @name = name @ttl = ttl run(&block) if block_given? end |
Instance Attribute Details
#alive ⇒ Object (readonly)
Returns the value of attribute alive.
9 10 11 |
# File 'lib/lusnoc/session.rb', line 9 def alive @alive end |
#expired_at ⇒ Object (readonly)
Returns the value of attribute expired_at.
9 10 11 |
# File 'lib/lusnoc/session.rb', line 9 def expired_at @expired_at end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
9 10 11 |
# File 'lib/lusnoc/session.rb', line 9 def id @id end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
9 10 11 |
# File 'lib/lusnoc/session.rb', line 9 def name @name end |
#ttl ⇒ Object (readonly)
Returns the value of attribute ttl.
9 10 11 |
# File 'lib/lusnoc/session.rb', line 9 def ttl @ttl end |
Instance Method Details
#alive!(exception_class = ExpiredError) ⇒ Object
44 45 46 |
# File 'lib/lusnoc/session.rb', line 44 def alive!(exception_class = ExpiredError) @alive || (raise exception_class.new("Session[#{@name}:#{@id}] expired")) end |
#alive? ⇒ Boolean
40 41 42 |
# File 'lib/lusnoc/session.rb', line 40 def alive? @alive end |
#expired? ⇒ Boolean
28 29 30 |
# File 'lib/lusnoc/session.rb', line 28 def expired? !alive? end |
#need_renew? ⇒ Boolean
36 37 38 |
# File 'lib/lusnoc/session.rb', line 36 def need_renew? time_to_expiration && time_to_expiration < (@ttl / 2.0) end |
#on_session_die(&block) ⇒ Object
55 56 57 58 59 |
# File 'lib/lusnoc/session.rb', line 55 def on_session_die(&block) @session_die_cb = block @session_die_cb&.call(self) if @alive == false self end |
#renew ⇒ Object
48 49 50 51 52 53 |
# File 'lib/lusnoc/session.rb', line 48 def renew alive! Lusnoc.http_put(build_url("/v1/session/renew/#{@id}"), nil, timeout: 1) @expired_at = Time.now + ttl logger.info "Session[#{@name}:#{@id}] renewed. Next expiration: #{@expired_at}" end |
#run ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/lusnoc/session.rb', line 18 def run @id = create_session(name, ttl) prepare_guard(@id).run do yield(self) end ensure destroy_session(@id) if @id end |
#time_to_expiration ⇒ Object
32 33 34 |
# File 'lib/lusnoc/session.rb', line 32 def time_to_expiration @expired_at && @expired_at - Time.now end |