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,6 +13,8 @@ require "searchkick/tasks"
13 require "searchkick/logging" if defined?(Rails) 13 require "searchkick/logging" if defined?(Rails)
14 14
15 module Searchkick 15 module Searchkick
  16 + class MissingIndexError < StandardError; end
  17 + class UnsupportedVersionError < StandardError; end
16 18
17 def self.client 19 def self.client
18 @client ||= Elasticsearch::Client.new(url: ENV["ELASTICSEARCH_URL"]) 20 @client ||= Elasticsearch::Client.new(url: ENV["ELASTICSEARCH_URL"])
lib/searchkick/query.rb
@@ -328,7 +328,7 @@ module Searchkick @@ -328,7 +328,7 @@ module Searchkick
328 rescue => e # TODO rescue type 328 rescue => e # TODO rescue type
329 status_code = e.message[1..3].to_i 329 status_code = e.message[1..3].to_i
330 if status_code == 404 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 elsif status_code == 500 and ( 332 elsif status_code == 500 and (
333 e.message.include?("IllegalArgumentException[minimumSimilarity >= 1]") or 333 e.message.include?("IllegalArgumentException[minimumSimilarity >= 1]") or
334 e.message.include?("No query registered for [multi_match]") or 334 e.message.include?("No query registered for [multi_match]") or
@@ -336,7 +336,7 @@ module Searchkick @@ -336,7 +336,7 @@ module Searchkick
336 e.message.include?("No query registered for [function_score]]") 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 else 340 else
341 raise e 341 raise e
342 end 342 end
test/index_test.rb
@@ -41,6 +41,10 @@ class TestIndex &lt; Minitest::Unit::TestCase @@ -41,6 +41,10 @@ class TestIndex &lt; Minitest::Unit::TestCase
41 assert_search "product", ["Product B"] 41 assert_search "product", ["Product B"]
42 end 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 if defined?(ActiveRecord) 48 if defined?(ActiveRecord)
45 49
46 def test_transaction 50 def test_transaction