class ActionDispatch::Session::MongoStore::Session

Attributes

_id[RW]
created_at[RW]
data[RW]
updated_at[RW]

Public Class Methods

collection() click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 67
def self.collection
  @collection ||= database[MongoSessionStore.collection_name]
end
database() click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 55
def self.database
  if @database
    @database
  else
    raise "MongoStore needs a database, e.g. MongoStore::Session.database = Mongo::Client.new(['127.0.0.1:27017'], database: \"my_app_development\")"
  end
end
database=(database) click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 63
def self.database=(database)
  @database = database
end
last() click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 51
def self.last
  where.last
end
load(options = {}) click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 17
def self.load(options = {})
  options[:data] = options["data"] if options["data"]
  new(options)
end
new(options = {}) click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 10
def initialize(options = {})
  @_id        = options[:_id]
  @data       = options[:data] || BSON::Binary.new(Marshal.dump({}), :generic)
  @created_at = options[:created_at]
  @updated_at = options[:updated_at]
end
reset_collection() click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 71
def self.reset_collection
  @collection = nil
end
where(query = {}) click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 47
def self.where(query = {})
  collection.find(query).map { |doc| load(doc) }
end

Public Instance Methods

collection() click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 75
def collection
  self.class.collection
end
data=(stuff) click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 43
def data=(stuff)
  @data = stuff.to_s
end
destroy() click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 26
def destroy
  scope.delete_one
end
save() click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 30
def save
  @created_at ||= Time.now
  @updated_at   = Time.now

  attributes = {
    :data       => BSON::Binary.new(@data, :generic),
    :created_at => @created_at,
    :updated_at => @updated_at
  }

  scope.replace_one(attributes, upsert: true)
end
scope() click to toggle source
# File lib/mongo_session_store/mongo_store.rb, line 22
def scope
  collection.find(:_id => _id)
end