Sha256: 08a21fa3c61b1b1217c537f9d99ee6910757595ab507da1f4e5577da10491b58

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

module ActiveFedora
  # = Active Fedora Ldp Cache
  class LdpCache
    module ClassMethods
      # Enable the query cache within the block if Active Fedora is configured.
      # If it's not, it will execute the given block.
      def cache(&block)
        connection = ActiveFedora.fedora.connection
        connection.cache(&block)
      end

      # Disable the query cache within the block if Active Fedora is configured.
      # If it's not, it will execute the given block.
      def uncached(&block)
        ActiveFedora.fedora.connection.uncached(&block)
      end
    end

    def initialize(app)
      @app = app
    end

    def call(env)
      ActiveFedora.fedora.connection.enable_cache!

      response = @app.call(env)
      response[2] = Rack::BodyProxy.new(response[2]) do
        reset_cache_settings
      end

      response
    rescue Exception => e
      reset_cache_settings
      raise e
    end

    private

      def reset_cache_settings
        ActiveFedora.fedora.connection.clear_cache
        ActiveFedora.fedora.connection.disable_cache!
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
active-fedora-9.7.0 lib/active_fedora/ldp_cache.rb
active-fedora-9.6.2 lib/active_fedora/ldp_cache.rb
active-fedora-9.6.1 lib/active_fedora/ldp_cache.rb