class ElasticSearch::Transport::Memcached
Constants
- DEFAULTS
- Response
Public Class Methods
new(server, options={})
click to toggle source
Calls superclass method
ElasticSearch::Transport::Base::new
# File lib/elasticsearch/transport/memcached.rb, line 16 def initialize(server, options={}) super @options = DEFAULTS.merge(@options) end
Public Instance Methods
all_nodes()
click to toggle source
# File lib/elasticsearch/transport/memcached.rb, line 29 def all_nodes memcached_addresses = nodes_info([])["nodes"].collect { |id, node| node["memcached_address"] } memcached_addresses.collect! do |a| if a =~ /inet\[.*\/([\d.:]+)\]/ $1 end end.compact! memcached_addresses end
close()
click to toggle source
# File lib/elasticsearch/transport/memcached.rb, line 25 def close @memcached.quit end
connect!()
click to toggle source
# File lib/elasticsearch/transport/memcached.rb, line 21 def connect! @memcached = ::Memcached.new(@server, :timeout => @options[:timeout]) #TODO allow passing other options? end
Private Instance Methods
request(method, operation, params={}, body=nil, headers={})
click to toggle source
# File lib/elasticsearch/transport/memcached.rb, line 41 def request(method, operation, params={}, body=nil, headers={}) begin uri = generate_uri(operation) query = generate_query_string(params) path = [uri, query].join("?") #puts "request: #{method} #{@server} #{path} #{body}" response = case method when :get @memcached.get(path, false) when :put, :post #TODO put vs post? @memcached.set(path, body, 0, false) when :delete @memcached.delete(path) end #puts "response: #{response}" response = Response.new(200, {}, response) #TODO handle_error(response) if response.status >= 500 response rescue Exception => e case e when TimeoutError raise TimeoutError else raise e end end end