Skip to content

Commit 6e16286

Browse files
committed
[MODEL] Minor changes for dynamic index_name implementation in f2b0918
Related: elastic#159
1 parent 4a0cdb9 commit 6e16286

File tree

2 files changed

+26
-42
lines changed

2 files changed

+26
-42
lines changed

elasticsearch-model/lib/elasticsearch/model/naming.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module ClassMethods
1515
# index_name "articles-#{Rails.env}"
1616
# end
1717
#
18-
# @example Set the index name for the `Article` model and reevaluate it on each call
18+
# @example Set the index name for the `Article` model and re-evaluate it on each call
1919
#
2020
# class Article
2121
# index_name { "articles-#{Time.now.year}" }
@@ -25,9 +25,6 @@ module ClassMethods
2525
#
2626
# Article.index_name "articles-#{Rails.env}"
2727
#
28-
# @example Directly set the index name for the `Article` model and reevaluate it on each call
29-
#
30-
# Article.index_name { "articles-#{Time.now.year}" }
3128
#
3229
def index_name name=nil, &block
3330
if name || block_given?

elasticsearch-model/test/integration/dynamic_index_name_test.rb

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,44 @@
11
require 'test_helper'
2+
require 'active_record'
23

34
module Elasticsearch
45
module Model
56
class DynamicIndexNameTest < Elasticsearch::Test::IntegrationTestCase
7+
context "Dynamic index name" do
8+
setup do
9+
class ::ArticleWithDynamicIndexName < ActiveRecord::Base
10+
include Elasticsearch::Model
11+
include Elasticsearch::Model::Callbacks
612

7-
class ::ArticleWithDynamicIndexName < ActiveRecord::Base
8-
include Elasticsearch::Model
9-
include Elasticsearch::Model::Callbacks
13+
def self.counter=(value)
14+
@counter = 0
15+
end
1016

11-
class << self
12-
attr_accessor :year
13-
end
17+
def self.counter
18+
(@counter ||= 0) && @counter += 1
19+
end
1420

15-
mapping { indexes :title }
16-
index_name { "articles-#{year}" }
17-
end
21+
mapping { indexes :title }
22+
index_name { "articles-#{counter}" }
23+
end
1824

19-
context "Dynamic index name" do
20-
setup do
21-
ActiveRecord::Schema.define(:version => 1) do
22-
create_table :article_with_dynamic_index_names do |t|
23-
t.string :title
25+
::ActiveRecord::Schema.define(:version => 1) do
26+
create_table ::ArticleWithDynamicIndexName.table_name do |t|
27+
t.string :title
2428
end
2529
end
26-
end
2730

28-
should 'evaluate the index_name value' do
29-
ArticleWithDynamicIndexName.year = '2014'
30-
31-
assert_equal ArticleWithDynamicIndexName.index_name, "articles-2014"
31+
::ArticleWithDynamicIndexName.counter = 0
3232
end
3333

34-
should 'reevaluate the index_name value each time' do
35-
ArticleWithDynamicIndexName.year = '2015'
36-
37-
assert_equal ArticleWithDynamicIndexName.index_name, "articles-2015"
34+
should 'evaluate the index_name value' do
35+
assert_equal ArticleWithDynamicIndexName.index_name, "articles-1"
3836
end
3937

40-
should "write and read at the the defined index" do
41-
ArticleWithDynamicIndexName.year = '2016'
42-
43-
ArticleWithDynamicIndexName.delete_all
44-
ArticleWithDynamicIndexName.__elasticsearch__.create_index! force: true
45-
46-
::ArticleWithDynamicIndexName.create! title: 'Test'
47-
48-
ArticleWithDynamicIndexName.__elasticsearch__.refresh_index!
49-
50-
response = ArticleWithDynamicIndexName.search(query: { match_all: {} })
51-
52-
assert_equal response.results.total, 1
53-
assert_equal response.search.definition[:index], ArticleWithDynamicIndexName.index_name
54-
assert_equal response.search.definition[:index], 'articles-2016'
38+
should 're-evaluate the index_name value each time' do
39+
assert_equal ArticleWithDynamicIndexName.index_name, "articles-1"
40+
assert_equal ArticleWithDynamicIndexName.index_name, "articles-2"
41+
assert_equal ArticleWithDynamicIndexName.index_name, "articles-3"
5542
end
5643
end
5744

0 commit comments

Comments
 (0)