diff --git a/lib/searchkick/model.rb b/lib/searchkick/model.rb index 7aaf4cd..7127d9f 100644 --- a/lib/searchkick/model.rb +++ b/lib/searchkick/model.rb @@ -22,21 +22,11 @@ module Searchkick raise ArgumentError, "Invalid value for callbacks" end - index_name = - if options[:index_name] - options[:index_name] - elsif options[:index_prefix].respond_to?(:call) - -> { [options[:index_prefix].call, model_name.plural, Searchkick.env, Searchkick.index_suffix].compact.join("_") } - else - [options.key?(:index_prefix) ? options[:index_prefix] : Searchkick.index_prefix, model_name.plural, Searchkick.env, Searchkick.index_suffix].compact.join("_") - end - class_eval do cattr_reader :searchkick_options, :searchkick_klass class_variable_set :@@searchkick_options, options.dup class_variable_set :@@searchkick_klass, self - class_variable_set :@@searchkick_index, index_name class_variable_set :@@searchkick_index_cache, {} class << self @@ -50,7 +40,7 @@ module Searchkick alias_method Searchkick.search_method_name, :searchkick_search if Searchkick.search_method_name def searchkick_index(name: nil) - index = name || class_variable_get(:@@searchkick_index) + index = name || searchkick_index_name index = index.call if index.respond_to?(:call) index_cache = class_variable_get(:@@searchkick_index_cache) index_cache[index] ||= Searchkick::Index.new(index, searchkick_options) @@ -66,6 +56,19 @@ module Searchkick def searchkick_index_options searchkick_index.index_options end + + def searchkick_index_name + @searchkick_index_name ||= begin + options = class_variable_get(:@@searchkick_options) + if options[:index_name] + options[:index_name] + elsif options[:index_prefix].respond_to?(:call) + -> { [options[:index_prefix].call, model_name.plural, Searchkick.env, Searchkick.index_suffix].compact.join("_") } + else + [options.key?(:index_prefix) ? options[:index_prefix] : Searchkick.index_prefix, model_name.plural, Searchkick.env, Searchkick.index_suffix].compact.join("_") + end + end + end end # always add callbacks, even when callbacks is false -- libgit2 0.21.0