Sha256: f20465b11793cef4d14d92d4f88d44c0dd67722b0440244c13ce03fabe083790

Contents?: true

Size: 983 Bytes

Versions: 11

Compression:

Stored size: 983 Bytes

Contents

module Neo4j
  module Rails
    # close lucene connections
    # reset the Neo4j.threadlocal_ref_node (Multitenancy)
    # clear the identity map
    class Middleware
      class Body #:nodoc:
        def initialize(target, original)
          @target = target
          @original = original
        end

        def each(&block)
          @target.each(&block)
        end

        def close
          @target.close if @target.respond_to?(:close)
        ensure
          IdentityMap.enabled = @original
          IdentityMap.clear
        end
      end

      def initialize(app)
        @app = app
      end

      def call(env)
        enabled = IdentityMap.enabled
        IdentityMap.enabled = Neo4j::Config[:identity_map]
        status, headers, body = @app.call(env)
        [status, headers, Body.new(body, enabled)]
      ensure
        Neo4j::Rails::Model.close_lucene_connections
        Neo4j.threadlocal_ref_node = Neo4j.default_ref_node
      end
    end

  end


end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
neo4j-2.2.1-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.2.0-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.2.0.rc1-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.0.1-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.0.0-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.0.0.rc2-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.0.0.rc1-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.0.0.alpha.9-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.0.0.alpha.8-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.0.0.alpha.7-java lib/neo4j/rails/rack_middleware.rb
neo4j-2.0.0.alpha.6-java lib/neo4j/rails/rack_middleware.rb