Commit 9623c51e3465d7d8d492e59de986cbdf949d1a5b

Authored by Andrew Kane
1 parent f0276889

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
... ...