Sha256: 8057f8b671ddd1db8a8730d694b39dc7c6a692942a8de86a80882965f9908322

Contents?: true

Size: 1.53 KB

Versions: 41

Compression:

Stored size: 1.53 KB

Contents

require File.join(File.dirname(__FILE__), 'abstract_session_proxy')

module Sunspot
  module SessionProxy
    # 
    # This session proxy implementation allows Sunspot to be used with a
    # master/slave Solr deployment. All write methods are delegated to a master
    # session, and read methods are delegated to a slave session.
    #
    class MasterSlaveSessionProxy < AbstractSessionProxy
      #
      # The session that connects to the master Solr instance.
      #
      attr_reader :master_session
      # 
      # The session that connects to the slave Solr instance.
      #
      attr_reader :slave_session

      delegate :batch, :commit, :commit_if_delete_dirty, :commit_if_dirty,
               :config, :delete_dirty?, :dirty?, :index, :index!, :optimize, :remove,
               :remove!, :remove_all, :remove_all!, :remove_by_id,
               :remove_by_id!, :to => :master_session
      delegate :new_search, :search, :new_more_like_this, :more_like_this, :to => :slave_session

      def initialize(master_session, slave_session)
        @master_session, @slave_session = master_session, slave_session
      end

      # 
      # By default, return the configuration for the master session. If the
      # +delegate+ param is +:slave+, then return config for the slave session.
      #
      def config(delegate = :master)
        case delegate
        when :master then @master_session.config
        when :slave then  @slave_session.config
        else raise(ArgumentError, "Expected :master or :slave")
        end
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 9 rubygems

Version Path
sunspot-2.2.0 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.1.1 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.1.0 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.0.0 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.0.0.pre.130115 lib/sunspot/session_proxy/master_slave_session_proxy.rb
gojee-sunspot-2.0.5 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.0.0.pre.120925 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot_solr-2.0.0.pre.120924 sunspot/lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot_rails-2.0.0.pre.120924 sunspot/lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.0.0.pre.120924 sunspot/lib/sunspot/session_proxy/master_slave_session_proxy.rb
gojee-sunspot-2.0.4 lib/sunspot/session_proxy/master_slave_session_proxy.rb
gojee-sunspot-2.0.2 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.0.0.pre.120720 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-1.3.3 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-1.3.2 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.0.0.pre.120417 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-2.0.0.pre.120415 lib/sunspot/session_proxy/master_slave_session_proxy.rb
sunspot-1.3.1 lib/sunspot/session_proxy/master_slave_session_proxy.rb
erichummel-sunspot-2.0.0.pre.111215d lib/sunspot/session_proxy/master_slave_session_proxy.rb
erichummel-sunspot-2.0.0.pre.111215c lib/sunspot/session_proxy/master_slave_session_proxy.rb