class AlgoliaSearch::SafeIndex
this class wraps an Algolia::Index object ensuring all raised exceptions are correctly logged or thrown depending on the `raise_on_failure` option
Public Class Methods
move_index(old_name, new_name)
click to toggle source
expose move as well
# File lib/algoliasearch-rails.rb, line 327 def self.move_index(old_name, new_name) SafeIndex.log_or_throw(:move_index, true) do AlgoliaSearch.client.move_index(old_name, new_name) end end
new(name, raise_on_failure)
click to toggle source
# File lib/algoliasearch-rails.rb, line 293 def initialize(name, raise_on_failure) @index = AlgoliaSearch.client.init_index(name) @raise_on_failure = raise_on_failure.nil? || raise_on_failure end
Private Class Methods
log_or_throw(method, raise_on_failure) { || ... }
click to toggle source
# File lib/algoliasearch-rails.rb, line 334 def self.log_or_throw(method, raise_on_failure, &block) begin yield rescue Algolia::AlgoliaError => e raise e if raise_on_failure # log the error (Rails.logger || Logger.new(STDOUT)).error("[algoliasearch-rails] #{e.message}") # return something case method.to_s when 'search' # some attributes are required { 'hits' => [], 'hitsPerPage' => 0, 'page' => 0, 'facets' => {}, 'error' => e } else # empty answer { 'error' => e } end end end
Public Instance Methods
get_settings(*args)
click to toggle source
special handling of get_settings
to avoid raising errors on 404
# File lib/algoliasearch-rails.rb, line 315 def get_settings(*args) SafeIndex.log_or_throw(:get_settings, @raise_on_failure) do begin @index.get_settings(*args) rescue Algolia::AlgoliaHttpError => e return {} if e.code == 404 # not fatal raise e end end end
wait_task(task_id)
click to toggle source
special handling of wait_task
to handle null task_id
# File lib/algoliasearch-rails.rb, line 307 def wait_task(task_id) return if task_id.nil? && !@raise_on_failure # ok SafeIndex.log_or_throw(:wait_task, @raise_on_failure) do @index.wait_task(task_id) end end