Class: Lotus::Action::Flash Private

Inherits:
Object
  • Object
show all
Defined in:
lib/lotus/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.

Since:

  • 0.3.0

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

Since:

  • 0.3.0

:__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

Since:

  • 0.4.0

:__last_request_id

Instance Method Summary collapse

Constructor Details

#initialize(session, request_id) ⇒ Lotus::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

Parameters:

  • session (Rack::Session::Abstract::SessionHash)

    the session

  • request_id (String)

    the HTTP Request ID

See Also:

Since:

  • 0.3.0



30
31
32
33
34
35
36
37
# File 'lib/lotus/action/flash.rb', line 30

def initialize(session, request_id)
  @session         = session
  @request_id      = request_id
  @last_request_id = session[LAST_REQUEST_KEY]

  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

Returns:

  • (Object, NilClass)

    the value

Since:

  • 0.3.0



56
57
58
59
60
# File 'lib/lotus/action/flash.rb', line 56

def [](key)
  last_request_flash.merge(data).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

Parameters:

  • key (#to_s)

    the key

  • value (Object)

    the value

Since:

  • 0.3.0



46
47
48
# File 'lib/lotus/action/flash.rb', line 46

def []=(key, value)
  data[key] = value
end

#clearvoid

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.

Since:

  • 0.3.0



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/lotus/action/flash.rb', line 69

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!
    set_last_request_id!
    remove!
  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.

Returns:

  • (TrueClass, FalseClass)

    the result of the check

Since:

  • 0.3.0



88
89
90
# File 'lib/lotus/action/flash.rb', line 88

def empty?
  _values.all?(&:empty?)
end