Sha256: 9e65b0d18b895dd57fb706e4dcc9b86ca6df7dc8f90115aeeccc01da9d763533

Contents?: true

Size: 1.29 KB

Versions: 10

Compression:

Stored size: 1.29 KB

Contents

module QuickTravel
  module Cache
    def cache(key, cache_options = {}, &block)
      QuickTravel::Cache.cache(key, cache_options) do
        block.call
      end
    end

    def self.cache(key, cache_options = nil)
      return yield unless key.present?
      cache_options ||= {}
      key = "#{@@namespace}_#{key}" unless cache_options[:disable_namespacing]
      cached_value = cache_store.read(key)
      return cached_value unless cache_empty?(cached_value)
      return nil unless block_given?
      cache_options ||= {}
      cache_options[:expires_in] = 1.day unless cache_options.key?(:expires_in)
      yield.tap { |value| cache_store.write(key, value, cache_options) }
    end

    def self.cache_empty?(cached_value)
      if cached_value.respond_to?(:body)
        return cached_value.body.nil? || cached_value.body.empty?
      end
      cached_value.nil?
    end

    def self.delete(key, namespace = true)
      key = "#{@@namespace}_#{key}" if namespace
      cache_store.delete(key)
    end

    def self.clear
      cache_store.clear
    end

    def self.cache_store
      @@cache_store
    end

    def self.cache_store=(session)
      @@cache_store = session
    end

    def self.namespace
      @@namespace
    end

    def self.namespace=(namespace)
      @@namespace = namespace
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
quicktravel_client-4.7.0 lib/quick_travel/cache.rb
quicktravel_client-4.6.0 lib/quick_travel/cache.rb
quicktravel_client-4.5.0 lib/quick_travel/cache.rb
quicktravel_client-4.4.0 lib/quick_travel/cache.rb
quicktravel_client-4.3.2 lib/quick_travel/cache.rb
quicktravel_client-4.3.1 lib/quick_travel/cache.rb
quicktravel_client-4.3.0 lib/quick_travel/cache.rb
quicktravel_client-4.2.0 lib/quick_travel/cache.rb
quicktravel_client-4.1.0 lib/quick_travel/cache.rb
quicktravel_client-4.0.0 lib/quick_travel/cache.rb