class DatastaxRails::RSolrClientWrapper
Wraps the RSolr Client class so that exceptions such as Connection
Refused can be caught and a new server tried (if one is available)
Public Class Methods
new(rsolr, model)
click to toggle source
@param [RSolr::Client] rsolr the initial RSolr client object to wrap
# File lib/datastax_rails/rsolr_client_wrapper.rb, line 6 def initialize(rsolr, model) @rsolr = rsolr @model = model end
Public Instance Methods
method_missing(sym, *args, &block)
click to toggle source
# File lib/datastax_rails/rsolr_client_wrapper.rb, line 11 def method_missing(sym, *args, &block) if @rsolr.uri.host != DatastaxRails::Base.current_server @rsolr.uri.host = DatastaxRails::Base.current_server @rsolr = @model.establish_solr_connection end @rsolr.__send__(sym, *args, &block) rescue Errno::ECONNREFUSED tries ||= 3 tries -= 1 if tries > 0 # Force cassandra connection to roll DatastaxRails::Cql::Select.new(SchemaMigration, ['digest']).limit(1).execute retry else raise end end