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