Sha256: cd917cbec94a182367ef349cb2357b749b53eefd07418c7cc1b075b8c8301e05

Contents?: true

Size: 1.06 KB

Versions: 2

Compression:

Stored size: 1.06 KB

Contents

module Lawnchair
  module StorageEngine
    class Abstract
      class << self
        attr_reader :data_store
        
        def data_store
          @data_store ||= {}
        end
      
        def fetch(key, options={}, &block)
          if self.db_connection?
            if exists?(key)
              value = get(key, options)
            else
              value = block.call
              set(key, value, options)
              return value
            end
          else
            block.call
          end
        end
      
        def get(key, options={})
          if options[:raw]
            data_store[computed_key(key)]
          else
            exists?(key) ? Marshal.load(data_store[computed_key(key)]) : nil
          end
        end
      
        def computed_key(key)
          raise "Missing key" if key.nil? || key.empty?
          raise "Key's may not contain whitespace" if key.match(/\s/)
          prefix = "Lawnchair"
          "#{prefix}:#{key}"
        end
        
        def db_connection?
          true
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lawnchair-0.5.7 lib/storage_engine/abstract.rb
lawnchair-0.5.6 lib/storage_engine/abstract.rb