Class: Hanami::Action::Flash Private
- Inherits:
-
Object
- Object
- Hanami::Action::Flash
- Defined in:
- lib/hanami/action/flash.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Container useful to transport data with the HTTP session It has a life span of one HTTP request or redirect.
Constant Summary collapse
- SESSION_KEY =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Session key where the data is stored
:__flash
- LAST_REQUEST_KEY =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Session key where the last request_id is stored
:__last_request_id
Instance Method Summary collapse
-
#[](key) ⇒ Object, NilClass
private
Get the value associated to the given key, if any.
-
#[]=(key, value) ⇒ Object
private
Set the given value for the given key.
-
#clear ⇒ void
private
Removes entirely the flash from the session if it has stale contents or if empty.
-
#empty? ⇒ TrueClass, FalseClass
private
Check if there are contents stored in the flash from the current or the previous request.
-
#initialize(session, request_id) ⇒ Hanami::Action::Flash
constructor
private
Initialize a new Flash instance.
- #inspect ⇒ String private
Constructor Details
#initialize(session, request_id) ⇒ Hanami::Action::Flash
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Initialize a new Flash instance
30 31 32 33 34 35 36 37 38 |
# File 'lib/hanami/action/flash.rb', line 30 def initialize(session, request_id) @session = session @request_id = request_id @last_request_id = session[LAST_REQUEST_KEY] @merged = {} session[SESSION_KEY] ||= {} session[SESSION_KEY][request_id] ||= {} end |
Instance Method Details
#[](key) ⇒ Object, NilClass
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Get the value associated to the given key, if any
57 58 59 60 61 |
# File 'lib/hanami/action/flash.rb', line 57 def [](key) @merged.fetch(key) do _values.find {|data| !data[key].nil? } end end |
#[]=(key, value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Set the given value for the given key
47 48 49 |
# File 'lib/hanami/action/flash.rb', line 47 def []=(key, value) data[key] = value end |
#clear ⇒ void
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Removes entirely the flash from the session if it has stale contents or if empty.
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/hanami/action/flash.rb', line 70 def clear # FIXME we're just before a release and I can't find a proper way to reproduce # this bug that I've found via a browser. # # It may happen that `#flash` is nil, and those two methods will fail unless flash.nil? expire_stale! remove! merge! set_last_request_id! end end |
#empty? ⇒ TrueClass, FalseClass
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Check if there are contents stored in the flash from the current or the previous request.
90 91 92 |
# File 'lib/hanami/action/flash.rb', line 90 def empty? _values.all?(&:empty?) end |
#inspect ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
97 98 99 |
# File 'lib/hanami/action/flash.rb', line 97 def inspect "#<#{self.class}:#{'0x%x' % (__id__ << 1)} #{@merged.inspect}>" end |