Sha256: c5bca8b20a4879060ff4c45a1f8b60ae62db88ab2009057b1708e62a1de53062
Contents?: true
Size: 1.51 KB
Versions: 3
Compression:
Stored size: 1.51 KB
Contents
class ThinkingSphinx::Connection def self.pool @pool ||= Innertube::Pool.new( Proc.new { ThinkingSphinx::Connection.new }, Proc.new { |connection| connection.close } ) end def self.take retries = 0 original = nil begin pool.take do |connection| connection.reset begin yield connection rescue Riddle::ConnectionError, Riddle::ResponseError, SystemCallError => error original = error raise Innertube::Pool::BadResource end end rescue Innertube::Pool::BadResource retries += 1 retry if retries < 3 raise original end end def initialize client.open end def client @client ||= begin client = Riddle::Client.new shuffled_addresses, configuration.port, client_key client.max_matches = _max_matches client.timeout = configuration.timeout || 0 client end end private def client_key configuration.configuration.searchd.client_key end def configuration ThinkingSphinx::Configuration.instance end def _max_matches configuration.configuration.searchd.max_matches || 1000 end def method_missing(method, *arguments, &block) client.send method, *arguments, &block end def shuffled_addresses return configuration.address unless configuration.shuffle addresses = Array(configuration.address) if addresses.respond_to?(:shuffle) addresses.shuffle else address.sort_by { rand } end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
thinking-sphinx-2.1.0 | lib/thinking_sphinx/connection.rb |
thinking-sphinx-1.5.0 | lib/thinking_sphinx/connection.rb |
friendlyfashion-thinking-sphinx-2.0.14.2 | lib/thinking_sphinx/connection.rb |