class ActiveSupport::Cache::MongoIdCacheStore

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method
# File lib/active_support/cache/mongo_id_cache_store.rb, line 8
def initialize(options = {})
  options[:collection_name] ||= :rails_caches
  options[:expires_in] ||= 86400
  super(options)
end

Public Instance Methods

cleanup() click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 18
def cleanup
  collection.find(expires_at: {'$lt' => Time.now.to_f}).delete_many
end
clear() click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 14
def clear
  collection.delete_many
end
delete_entry(key, options = nil) click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 40
def delete_entry(key, options = nil)
  collection.find(_id: key).delete_one
end
delete_matched(matcher, options=nil) click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 44
def delete_matched(matcher, options=nil)
  options = merged_options(options)
  collection.find(_id: key_matcher(matcher, options)).delete_many
end
deserialize(value) click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 49
def deserialize(value)
  Marshal.load(value) rescue value
end
read_entry(key, options) click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 22
def read_entry(key, options)
  query = {_id: key, expires_at: {'$gt': Time.now.to_f}}
  doc = collection.find(query).first
  return nil if doc.nil?
  entry = doc['raw'] ? doc['value'] : deserialize(doc['value'].data)
  entry.is_a?(Entry) ? entry : Entry.new(entry)
end
serialize(value) click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 53
def serialize(value)
  BSON::Binary.new(Marshal.dump(value))
end
write_entry(key, entry, raw: false, **options) click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 30
def write_entry(key, entry, raw: false, **options)
  query   = {_id: key}
  updates = {'$set': {
      value:  raw ? entry.value : serialize(entry),
      expires_at: entry.expires_at,
      raw: raw
  }}
  collection.update_one(query, updates, upsert: true)
end

Private Instance Methods

collection() click to toggle source
# File lib/active_support/cache/mongo_id_cache_store.rb, line 59
def collection
  ::Mongoid.default_client[@options[:collection_name]]
end