Sha256: 0e034522d3ecd96e33f2044def49b936b0f9820877e36086cb9d8c361c6d409f
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 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 ||= Riddle::Client.new shuffled_addresses, configuration.port, client_key end def reset client.reset client.max_matches = _max_matches client.timeout = configuration.timeout || 0 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
friendlyfashion-thinking-sphinx-2.0.14.3 | lib/thinking_sphinx/connection.rb |