Commit c42e01b18707cedc1143f2832ac165ba0c942f92

Authored by Andrew Kane
1 parent de97f0eb

Added custom exception types for #201

lib/searchkick.rb
... ... @@ -13,6 +13,8 @@ require "searchkick/tasks"
13 13 require "searchkick/logging" if defined?(Rails)
14 14  
15 15 module Searchkick
  16 + class MissingIndexError < StandardError; end
  17 + class UnsupportedVersionError < StandardError; end
16 18  
17 19 def self.client
18 20 @client ||= Elasticsearch::Client.new(url: ENV["ELASTICSEARCH_URL"])
... ...
lib/searchkick/query.rb
... ... @@ -328,7 +328,7 @@ module Searchkick
328 328 rescue => e # TODO rescue type
329 329 status_code = e.message[1..3].to_i
330 330 if status_code == 404
331   - raise "Index missing - run #{searchkick_klass.name}.reindex"
  331 + raise MissingIndexError, "Index missing - run #{searchkick_klass.name}.reindex"
332 332 elsif status_code == 500 and (
333 333 e.message.include?("IllegalArgumentException[minimumSimilarity >= 1]") or
334 334 e.message.include?("No query registered for [multi_match]") or
... ... @@ -336,7 +336,7 @@ module Searchkick
336 336 e.message.include?("No query registered for [function_score]]")
337 337 )
338 338  
339   - raise "This version of Searchkick requires Elasticsearch 0.90.4 or greater"
  339 + raise UnsupportedVersionError, "This version of Searchkick requires Elasticsearch 0.90.4 or greater"
340 340 else
341 341 raise e
342 342 end
... ...
test/index_test.rb
... ... @@ -41,6 +41,10 @@ class TestIndex &lt; Minitest::Unit::TestCase
41 41 assert_search "product", ["Product B"]
42 42 end
43 43  
  44 + def test_missing_index
  45 + assert_raises(Searchkick::MissingIndexError){ Product.search "test", index_name: "not_found" }
  46 + end
  47 +
44 48 if defined?(ActiveRecord)
45 49  
46 50 def test_transaction
... ...