class SessionJsonizer

Constants

VERSION

Public Instance Methods

dump(session) click to toggle source
# File lib/session_jsonizer.rb, line 24
def dump(session)
  ::Rails.logger.debug "serializer dump: #{session}"

  new_session = Hash[session.map do |key, value|
    [
      key,
      if key == 'flash'
        dump_flash(value)
      else
        value
      end
    ]
  end]

  ::JSON.dump(new_session)
end
load(value) click to toggle source
# File lib/session_jsonizer.rb, line 3
def load(value)
  ::Rails.logger.debug "serializer load: #{value}"
  if value.first == '{'
    Hash[::JSON.load(value).map do |key, value|
      [
        key,
        case
        when key == 'flash'
          load_flash(value)
        when value.is_a?(Hash)
          value.with_indifferent_access
        else
          value
        end
      ]
    end]
  else
    ::Marshal.load(value)
  end
end

Private Instance Methods

dump_flash(session_value) click to toggle source
# File lib/session_jsonizer.rb, line 49
def dump_flash(session_value)
  ActionDispatch::Flash::FlashHash.from_session_value(session_value).to_hash
end
load_flash(data) click to toggle source
# File lib/session_jsonizer.rb, line 45
def load_flash(data)
  { 'flashes' => data, 'discard' => [] }
end