Sha256: 423aeb5ffaf201255b46efe15859706cdfe5618adbea6ab2d7ca65a2892ef23d

Contents?: true

Size: 996 Bytes

Versions: 24

Compression:

Stored size: 996 Bytes

Contents

require 'ostruct'

module CloudSesame
  module Domain
    module ClientModule
      module Caching
        class RailsCache < Base

          def initialize(client, searchable)
            ensure_environment_exists
            super
          end

          def fetch(params)
            Rails.cache.fetch(hexdigest(params)) do
              results = search params
              OpenStruct.new(
                status: results.status,
                hits: results.hits,
                facets: results.facets
              )
            end
          end

          private

          def hexdigest(params)
            searchable_params = params.merge(searchable: @searchable)
            Digest::MD5.hexdigest Marshal.dump(searchable_params)
          end

          def ensure_environment_exists
            unless RailsCache.const_defined?(:Rails)
              raise Error::Caching, "Rails environment cannot be found"
            end
          end

        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
CloudSesame-1.0.1 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-1.0.0 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.9.4 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.9.3 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.9.2 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.9.1 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.9.0 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.8.3 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.8.2 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.8.1 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.8.0 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.13 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.12 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.11 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.10 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.9 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.8 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.7 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.5 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb
CloudSesame-0.7.4 lib/cloud_sesame/domain/client_module/caching/rails_cache.rb