Commit ed00548cd8ab9427fa95829c01aafdbb6116c525

Authored by Jim
1 parent e7f608cd

added the possibility to use a proc or labda as an index_name

lib/searchkick/model.rb
... ... @@ -3,17 +3,19 @@ module Searchkick
3 3  
4 4 def searchkick(options = {})
5 5 class_eval do
6   - cattr_reader :searchkick_options, :searchkick_env, :searchkick_klass, :searchkick_index
  6 + cattr_reader :searchkick_options, :searchkick_env, :searchkick_klass
7 7  
8 8 class_variable_set :@@searchkick_options, options.dup
9 9 class_variable_set :@@searchkick_env, ENV["RACK_ENV"] || ENV["RAILS_ENV"] || "development"
10 10 class_variable_set :@@searchkick_klass, self
11 11 class_variable_set :@@searchkick_callbacks, options[:callbacks] != false
  12 + class_variable_set :@@searchkick_index, options[:index_name] || [options[:index_prefix], model_name.plural, searchkick_env].compact.join("_")
12 13  
13   - # set index name
14   - # TODO support proc
15   - index_name = options[:index_name] || [options[:index_prefix], model_name.plural, searchkick_env].compact.join("_")
16   - class_variable_set :@@searchkick_index, Searchkick::Index.new(index_name)
  14 + def self.searchkick_index
  15 + index = class_variable_get :@@searchkick_index
  16 + index = index.call if index.respond_to? :call
  17 + Searchkick::Index.new(index)
  18 + end
17 19  
18 20 extend Searchkick::Search
19 21 extend Searchkick::Reindex
... ...
test/inheritance_test.rb
... ... @@ -10,7 +10,7 @@ class TestInheritance < Minitest::Unit::TestCase
10 10 end
11 11  
12 12 def test_child_index_name
13   - assert_equal "animals_test", Dog.searchkick_index.name
  13 + assert_equal "animals-#{Date.today.year}", Dog.searchkick_index.name
14 14 end
15 15  
16 16 def test_child_search
... ...
test/test_helper.rb
... ... @@ -143,7 +143,7 @@ class Store
143 143 end
144 144  
145 145 class Animal
146   - searchkick autocomplete: [:name], suggest: [:name]
  146 + searchkick autocomplete: [:name], suggest: [:name], index_name: -> { "#{self.name.tableize}-#{Date.today.year}" }
147 147 end
148 148  
149 149 Product.searchkick_index.delete if Product.searchkick_index.exists?
... ...