class Sprockets::Cache::MongoDBStore

A simple MongoDB cache store.

environment.cache = Sprockets::Cache::MongoDBStore.new($mongo)

Public Class Methods

new(mongo_conn, db_name = 'sprockets') click to toggle source
# File lib/sprockets-cache-mongodb/mongodb_store.rb, line 9
def initialize(mongo_conn, db_name = 'sprockets')
  @mongo = ::Mongo::Grid.new( mongo_conn.db(db_name) )
end

Public Instance Methods

[](key) click to toggle source

Lookup value in cache

# File lib/sprockets-cache-mongodb/mongodb_store.rb, line 14
def [](key)
  sanitized_key = sanitize_key(key)
  return unless @mongo.exist?(:filename => sanitized_key)
  object = @mongo.get sanitized_key
  data   = object.read
  Marshal.load data if data
end
[]=(key, value) click to toggle source

Save value to cache

# File lib/sprockets-cache-mongodb/mongodb_store.rb, line 23
def []=(key, value)
  @mongo.put  Marshal.dump(value),
              :_id          => sanitize_key(key),
              :filename     => sanitize_key(key),
              :content_type => "application/x-ruby-marshal"
  value
end

Private Instance Methods

sanitize_key(key) click to toggle source
# File lib/sprockets-cache-mongodb/mongodb_store.rb, line 33
def sanitize_key(key)
  ::Digest::SHA1.hexdigest key
end