class CouchdbReindexer::Indexer
Attributes
options[W]
Public Class Methods
new(options)
click to toggle source
# File lib/couchdb_reindexer.rb, line 18 def initialize(options) @options = @@default_options.merge!(options) puts "***************************************************************" puts "********************** RUNNING REINDEXER **********************" puts "ON: #{default_url}" puts "***************************************************************" run end
Public Instance Methods
default_url()
click to toggle source
# File lib/couchdb_reindexer.rb, line 48 def default_url "#{@options[:protocol]}://#{@options[:host]}:#{@options[:port]}/#{@options[:database]}" end
docs_uri()
click to toggle source
# File lib/couchdb_reindexer.rb, line 52 def docs_uri URI.parse("#{default_url}/_all_docs?startkey=%22_design/%22&endkey=%22_design0%22&include_docs=true") end
get_docs()
click to toggle source
# File lib/couchdb_reindexer.rb, line 60 def get_docs docs_request = make_request(docs_uri) docs_json = '[{}]' docs_json = docs_request.body if docs_request.code == '200' JSON.parse(docs_json) end
make_request(url, retries = 1)
click to toggle source
# File lib/couchdb_reindexer.rb, line 67 def make_request(url, retries = 1) raise Net::ReadTimeout if retries.negative? request = Net::HTTP::Get.new(url) if @options[:username] && @options[:password] request.basic_auth @options[:username], @options[:password] end begin Net::HTTP.start(url.hostname, url.port) { |http| http.request(request) } rescue Net::ReadTimeout make_request(url, retries - 1) end end
run()
click to toggle source
# File lib/couchdb_reindexer.rb, line 27 def run docs = get_docs if docs.to_json != '[{}]' docs = docs['rows'] docs.each do |doc| puts "Document: #{doc['doc']['_id']}" doc['doc']['views'].each do |view| puts "\tRequesting view: #{doc['doc']['_id']}/_view/#{view[0]}" response = make_request(view_uri(doc['doc']['_id'], view[0])) if response.code == '200' puts "\tResponse status: OK!" else puts "\tResponse status: Error!" end end end else puts 'The database is empty or not reachable.' end end
view_uri(document_name, view_name)
click to toggle source
# File lib/couchdb_reindexer.rb, line 56 def view_uri(document_name, view_name) URI.parse("#{default_url}/#{document_name}/_view/#{view_name}") end