Commit c42e01b18707cedc1143f2832ac165ba0c942f92
1 parent
de97f0eb
Exists in
master
and in
21 other branches
Added custom exception types for #201
Showing
3 changed files
with
8 additions
and
2 deletions
Show diff stats
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 < Minitest::Unit::TestCase | @@ -41,6 +41,10 @@ class TestIndex < 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 |