Commit 9623c51e3465d7d8d492e59de986cbdf949d1a5b
1 parent
f0276889
Exists in
master
and in
2 other branches
Lazy load index name [skip ci]
Showing
1 changed file
with
14 additions
and
11 deletions
Show diff stats
lib/searchkick/model.rb
@@ -22,21 +22,11 @@ module Searchkick | @@ -22,21 +22,11 @@ module Searchkick | ||
22 | raise ArgumentError, "Invalid value for callbacks" | 22 | raise ArgumentError, "Invalid value for callbacks" |
23 | end | 23 | end |
24 | 24 | ||
25 | - index_name = | ||
26 | - if options[:index_name] | ||
27 | - options[:index_name] | ||
28 | - elsif options[:index_prefix].respond_to?(:call) | ||
29 | - -> { [options[:index_prefix].call, model_name.plural, Searchkick.env, Searchkick.index_suffix].compact.join("_") } | ||
30 | - else | ||
31 | - [options.key?(:index_prefix) ? options[:index_prefix] : Searchkick.index_prefix, model_name.plural, Searchkick.env, Searchkick.index_suffix].compact.join("_") | ||
32 | - end | ||
33 | - | ||
34 | class_eval do | 25 | class_eval do |
35 | cattr_reader :searchkick_options, :searchkick_klass | 26 | cattr_reader :searchkick_options, :searchkick_klass |
36 | 27 | ||
37 | class_variable_set :@@searchkick_options, options.dup | 28 | class_variable_set :@@searchkick_options, options.dup |
38 | class_variable_set :@@searchkick_klass, self | 29 | class_variable_set :@@searchkick_klass, self |
39 | - class_variable_set :@@searchkick_index, index_name | ||
40 | class_variable_set :@@searchkick_index_cache, {} | 30 | class_variable_set :@@searchkick_index_cache, {} |
41 | 31 | ||
42 | class << self | 32 | class << self |
@@ -50,7 +40,7 @@ module Searchkick | @@ -50,7 +40,7 @@ module Searchkick | ||
50 | alias_method Searchkick.search_method_name, :searchkick_search if Searchkick.search_method_name | 40 | alias_method Searchkick.search_method_name, :searchkick_search if Searchkick.search_method_name |
51 | 41 | ||
52 | def searchkick_index(name: nil) | 42 | def searchkick_index(name: nil) |
53 | - index = name || class_variable_get(:@@searchkick_index) | 43 | + index = name || searchkick_index_name |
54 | index = index.call if index.respond_to?(:call) | 44 | index = index.call if index.respond_to?(:call) |
55 | index_cache = class_variable_get(:@@searchkick_index_cache) | 45 | index_cache = class_variable_get(:@@searchkick_index_cache) |
56 | index_cache[index] ||= Searchkick::Index.new(index, searchkick_options) | 46 | index_cache[index] ||= Searchkick::Index.new(index, searchkick_options) |
@@ -66,6 +56,19 @@ module Searchkick | @@ -66,6 +56,19 @@ module Searchkick | ||
66 | def searchkick_index_options | 56 | def searchkick_index_options |
67 | searchkick_index.index_options | 57 | searchkick_index.index_options |
68 | end | 58 | end |
59 | + | ||
60 | + def searchkick_index_name | ||
61 | + @searchkick_index_name ||= begin | ||
62 | + options = class_variable_get(:@@searchkick_options) | ||
63 | + if options[:index_name] | ||
64 | + options[:index_name] | ||
65 | + elsif options[:index_prefix].respond_to?(:call) | ||
66 | + -> { [options[:index_prefix].call, model_name.plural, Searchkick.env, Searchkick.index_suffix].compact.join("_") } | ||
67 | + else | ||
68 | + [options.key?(:index_prefix) ? options[:index_prefix] : Searchkick.index_prefix, model_name.plural, Searchkick.env, Searchkick.index_suffix].compact.join("_") | ||
69 | + end | ||
70 | + end | ||
71 | + end | ||
69 | end | 72 | end |
70 | 73 | ||
71 | # always add callbacks, even when callbacks is false | 74 | # always add callbacks, even when callbacks is false |