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 | 22 | raise ArgumentError, "Invalid value for callbacks" |
23 | 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 | 25 | class_eval do |
35 | 26 | cattr_reader :searchkick_options, :searchkick_klass |
36 | 27 | |
37 | 28 | class_variable_set :@@searchkick_options, options.dup |
38 | 29 | class_variable_set :@@searchkick_klass, self |
39 | - class_variable_set :@@searchkick_index, index_name | |
40 | 30 | class_variable_set :@@searchkick_index_cache, {} |
41 | 31 | |
42 | 32 | class << self |
... | ... | @@ -50,7 +40,7 @@ module Searchkick |
50 | 40 | alias_method Searchkick.search_method_name, :searchkick_search if Searchkick.search_method_name |
51 | 41 | |
52 | 42 | def searchkick_index(name: nil) |
53 | - index = name || class_variable_get(:@@searchkick_index) | |
43 | + index = name || searchkick_index_name | |
54 | 44 | index = index.call if index.respond_to?(:call) |
55 | 45 | index_cache = class_variable_get(:@@searchkick_index_cache) |
56 | 46 | index_cache[index] ||= Searchkick::Index.new(index, searchkick_options) |
... | ... | @@ -66,6 +56,19 @@ module Searchkick |
66 | 56 | def searchkick_index_options |
67 | 57 | searchkick_index.index_options |
68 | 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 | 72 | end |
70 | 73 | |
71 | 74 | # always add callbacks, even when callbacks is false | ... | ... |