tire 0.1.16 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +131 -62
- data/examples/rails-application-template.rb +1 -1
- data/examples/tire-dsl.rb +6 -6
- data/lib/tire/index.rb +7 -27
- data/lib/tire/model/callbacks.rb +1 -1
- data/lib/tire/model/search.rb +63 -27
- data/lib/tire/results/collection.rb +33 -15
- data/lib/tire/results/item.rb +46 -8
- data/lib/tire/search.rb +2 -5
- data/lib/tire/search/sort.rb +0 -7
- data/lib/tire/version.rb +6 -6
- data/test/integration/active_model_searchable_test.rb +26 -5
- data/test/integration/active_record_searchable_test.rb +94 -9
- data/test/integration/filters_test.rb +1 -1
- data/test/integration/highlight_test.rb +0 -1
- data/test/integration/index_mapping_test.rb +3 -4
- data/test/integration/percolator_test.rb +6 -6
- data/test/integration/persistent_model_test.rb +19 -1
- data/test/integration/query_string_test.rb +9 -0
- data/test/integration/results_test.rb +11 -0
- data/test/models/active_record_models.rb +49 -0
- data/test/test_helper.rb +2 -0
- data/test/unit/index_test.rb +16 -5
- data/test/unit/model_search_test.rb +45 -6
- data/test/unit/results_collection_test.rb +51 -2
- data/test/unit/results_item_test.rb +64 -1
- data/test/unit/search_sort_test.rb +26 -59
- data/test/unit/search_test.rb +17 -1
- metadata +16 -49
- data/test/models/active_record_article.rb +0 -12
@@ -6,74 +6,41 @@ module Tire::Search
|
|
6
6
|
|
7
7
|
context "Sort" do
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
should "encode simple strings" do
|
12
|
-
assert_equal [:foo].to_json, Sort.new.foo.to_json
|
13
|
-
end
|
14
|
-
|
15
|
-
should "encode method arguments" do
|
16
|
-
assert_equal [:foo => 'desc'].to_json, Sort.new.foo('desc').to_json
|
17
|
-
end
|
18
|
-
|
19
|
-
should "encode hash" do
|
20
|
-
assert_equal [ :foo => { :reverse => true } ].to_json, Sort.new.foo(:reverse => true).to_json
|
21
|
-
end
|
22
|
-
|
23
|
-
should "encode multiple sort fields" do
|
24
|
-
assert_equal [:foo, :bar].to_json, Sort.new.foo.bar.to_json
|
25
|
-
end
|
26
|
-
|
27
|
-
should "encode fields when passed as a block to constructor with deprecated interface" do
|
28
|
-
s = Sort.new do
|
29
|
-
foo
|
30
|
-
bar 'desc'
|
31
|
-
_score
|
32
|
-
end
|
33
|
-
assert_equal [ :foo, {:bar => 'desc'}, :_score ].to_json, s.to_json
|
34
|
-
end
|
35
|
-
|
9
|
+
should "be serialized to JSON" do
|
10
|
+
assert_respond_to Sort.new, :to_json
|
36
11
|
end
|
37
12
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
assert_respond_to Sort.new, :to_json
|
42
|
-
end
|
43
|
-
|
44
|
-
should "encode simple strings" do
|
45
|
-
assert_equal [:foo].to_json, Sort.new.by(:foo).to_json
|
46
|
-
end
|
13
|
+
should "encode simple strings" do
|
14
|
+
assert_equal [:foo].to_json, Sort.new.by(:foo).to_json
|
15
|
+
end
|
47
16
|
|
48
|
-
|
49
|
-
|
50
|
-
|
17
|
+
should "encode method arguments" do
|
18
|
+
assert_equal [:foo => 'desc'].to_json, Sort.new.by(:foo, 'desc').to_json
|
19
|
+
end
|
51
20
|
|
52
|
-
|
53
|
-
|
54
|
-
|
21
|
+
should "encode hash" do
|
22
|
+
assert_equal [ :foo => { :reverse => true } ].to_json, Sort.new.by(:foo, :reverse => true).to_json
|
23
|
+
end
|
55
24
|
|
56
|
-
|
57
|
-
|
58
|
-
|
25
|
+
should "encode multiple sort fields in chain" do
|
26
|
+
assert_equal [:foo, :bar].to_json, Sort.new.by(:foo).by(:bar).to_json
|
27
|
+
end
|
59
28
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
assert_equal [ :foo, {:bar => 'desc'}, :_score ].to_json, s.to_json
|
29
|
+
should "encode fields when passed as a block to constructor" do
|
30
|
+
s = Sort.new do
|
31
|
+
by :foo
|
32
|
+
by :bar, 'desc'
|
33
|
+
by :_score
|
67
34
|
end
|
35
|
+
assert_equal [ :foo, {:bar => 'desc'}, :_score ].to_json, s.to_json
|
36
|
+
end
|
68
37
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
s = Sort.new { by 'author.name', 'desc' }
|
74
|
-
assert_equal [ {'author.name' => 'desc'} ].to_json, s.to_json
|
75
|
-
end
|
38
|
+
should "encode fields deeper in json" do
|
39
|
+
s = Sort.new { by 'author.name' }
|
40
|
+
assert_equal [ 'author.name' ].to_json, s.to_json
|
76
41
|
|
42
|
+
s = Sort.new { by 'author.name', 'desc' }
|
43
|
+
assert_equal [ {'author.name' => 'desc'} ].to_json, s.to_json
|
77
44
|
end
|
78
45
|
|
79
46
|
end
|
data/test/unit/search_test.rb
CHANGED
@@ -254,7 +254,23 @@ module Tire
|
|
254
254
|
fields :title
|
255
255
|
end
|
256
256
|
hash = MultiJson.decode( s.to_json )
|
257
|
-
assert_equal 'title', hash['fields']
|
257
|
+
assert_equal ['title'], hash['fields']
|
258
|
+
end
|
259
|
+
|
260
|
+
should "take multiple fields as an Array" do
|
261
|
+
s = Search::Search.new('index') do
|
262
|
+
fields [:title, :tags]
|
263
|
+
end
|
264
|
+
hash = MultiJson.decode( s.to_json )
|
265
|
+
assert_equal ['title', 'tags'], hash['fields']
|
266
|
+
end
|
267
|
+
|
268
|
+
should "take multiple fields as splat argument" do
|
269
|
+
s = Search::Search.new('index') do
|
270
|
+
fields :title, :tags
|
271
|
+
end
|
272
|
+
hash = MultiJson.decode( s.to_json )
|
273
|
+
assert_equal ['title', 'tags'], hash['fields']
|
258
274
|
end
|
259
275
|
|
260
276
|
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
4
|
+
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Karel Minarik
|
@@ -15,17 +14,16 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2011-
|
17
|
+
date: 2011-08-21 00:00:00 +02:00
|
18
|
+
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rake
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
24
|
requirements:
|
26
25
|
- - ">="
|
27
26
|
- !ruby/object:Gem::Version
|
28
|
-
hash: 63
|
29
27
|
segments:
|
30
28
|
- 0
|
31
29
|
- 8
|
@@ -37,11 +35,9 @@ dependencies:
|
|
37
35
|
name: rest-client
|
38
36
|
prerelease: false
|
39
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
38
|
requirements:
|
42
39
|
- - ~>
|
43
40
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 15
|
45
41
|
segments:
|
46
42
|
- 1
|
47
43
|
- 6
|
@@ -53,11 +49,9 @@ dependencies:
|
|
53
49
|
name: multi_json
|
54
50
|
prerelease: false
|
55
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
52
|
requirements:
|
58
53
|
- - ~>
|
59
54
|
- !ruby/object:Gem::Version
|
60
|
-
hash: 15
|
61
55
|
segments:
|
62
56
|
- 1
|
63
57
|
- 0
|
@@ -68,11 +62,9 @@ dependencies:
|
|
68
62
|
name: activemodel
|
69
63
|
prerelease: false
|
70
64
|
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
65
|
requirements:
|
73
66
|
- - ~>
|
74
67
|
- !ruby/object:Gem::Version
|
75
|
-
hash: 7
|
76
68
|
segments:
|
77
69
|
- 3
|
78
70
|
- 0
|
@@ -83,11 +75,9 @@ dependencies:
|
|
83
75
|
name: bundler
|
84
76
|
prerelease: false
|
85
77
|
requirement: &id005 !ruby/object:Gem::Requirement
|
86
|
-
none: false
|
87
78
|
requirements:
|
88
79
|
- - ~>
|
89
80
|
- !ruby/object:Gem::Version
|
90
|
-
hash: 23
|
91
81
|
segments:
|
92
82
|
- 1
|
93
83
|
- 0
|
@@ -99,11 +89,9 @@ dependencies:
|
|
99
89
|
name: yajl-ruby
|
100
90
|
prerelease: false
|
101
91
|
requirement: &id006 !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
92
|
requirements:
|
104
93
|
- - ~>
|
105
94
|
- !ruby/object:Gem::Version
|
106
|
-
hash: 63
|
107
95
|
segments:
|
108
96
|
- 0
|
109
97
|
- 8
|
@@ -115,11 +103,9 @@ dependencies:
|
|
115
103
|
name: turn
|
116
104
|
prerelease: false
|
117
105
|
requirement: &id007 !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
106
|
requirements:
|
120
107
|
- - ">="
|
121
108
|
- !ruby/object:Gem::Version
|
122
|
-
hash: 3
|
123
109
|
segments:
|
124
110
|
- 0
|
125
111
|
version: "0"
|
@@ -129,11 +115,9 @@ dependencies:
|
|
129
115
|
name: shoulda
|
130
116
|
prerelease: false
|
131
117
|
requirement: &id008 !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
118
|
requirements:
|
134
119
|
- - ">="
|
135
120
|
- !ruby/object:Gem::Version
|
136
|
-
hash: 3
|
137
121
|
segments:
|
138
122
|
- 0
|
139
123
|
version: "0"
|
@@ -143,11 +127,9 @@ dependencies:
|
|
143
127
|
name: mocha
|
144
128
|
prerelease: false
|
145
129
|
requirement: &id009 !ruby/object:Gem::Requirement
|
146
|
-
none: false
|
147
130
|
requirements:
|
148
131
|
- - ">="
|
149
132
|
- !ruby/object:Gem::Version
|
150
|
-
hash: 3
|
151
133
|
segments:
|
152
134
|
- 0
|
153
135
|
version: "0"
|
@@ -157,11 +139,9 @@ dependencies:
|
|
157
139
|
name: rdoc
|
158
140
|
prerelease: false
|
159
141
|
requirement: &id010 !ruby/object:Gem::Requirement
|
160
|
-
none: false
|
161
142
|
requirements:
|
162
143
|
- - ">="
|
163
144
|
- !ruby/object:Gem::Version
|
164
|
-
hash: 3
|
165
145
|
segments:
|
166
146
|
- 0
|
167
147
|
version: "0"
|
@@ -171,11 +151,9 @@ dependencies:
|
|
171
151
|
name: sdoc
|
172
152
|
prerelease: false
|
173
153
|
requirement: &id011 !ruby/object:Gem::Requirement
|
174
|
-
none: false
|
175
154
|
requirements:
|
176
155
|
- - ">="
|
177
156
|
- !ruby/object:Gem::Version
|
178
|
-
hash: 3
|
179
157
|
segments:
|
180
158
|
- 0
|
181
159
|
version: "0"
|
@@ -185,11 +163,9 @@ dependencies:
|
|
185
163
|
name: rcov
|
186
164
|
prerelease: false
|
187
165
|
requirement: &id012 !ruby/object:Gem::Requirement
|
188
|
-
none: false
|
189
166
|
requirements:
|
190
167
|
- - ">="
|
191
168
|
- !ruby/object:Gem::Version
|
192
|
-
hash: 3
|
193
169
|
segments:
|
194
170
|
- 0
|
195
171
|
version: "0"
|
@@ -199,11 +175,9 @@ dependencies:
|
|
199
175
|
name: activerecord
|
200
176
|
prerelease: false
|
201
177
|
requirement: &id013 !ruby/object:Gem::Requirement
|
202
|
-
none: false
|
203
178
|
requirements:
|
204
179
|
- - ~>
|
205
180
|
- !ruby/object:Gem::Version
|
206
|
-
hash: 9
|
207
181
|
segments:
|
208
182
|
- 3
|
209
183
|
- 0
|
@@ -215,11 +189,9 @@ dependencies:
|
|
215
189
|
name: supermodel
|
216
190
|
prerelease: false
|
217
191
|
requirement: &id014 !ruby/object:Gem::Requirement
|
218
|
-
none: false
|
219
192
|
requirements:
|
220
193
|
- - ">="
|
221
194
|
- !ruby/object:Gem::Version
|
222
|
-
hash: 3
|
223
195
|
segments:
|
224
196
|
- 0
|
225
197
|
version: "0"
|
@@ -229,11 +201,9 @@ dependencies:
|
|
229
201
|
name: sqlite3
|
230
202
|
prerelease: false
|
231
203
|
requirement: &id015 !ruby/object:Gem::Requirement
|
232
|
-
none: false
|
233
204
|
requirements:
|
234
205
|
- - ">="
|
235
206
|
- !ruby/object:Gem::Version
|
236
|
-
hash: 3
|
237
207
|
segments:
|
238
208
|
- 0
|
239
209
|
version: "0"
|
@@ -307,7 +277,7 @@ files:
|
|
307
277
|
- test/models/active_model_article.rb
|
308
278
|
- test/models/active_model_article_with_callbacks.rb
|
309
279
|
- test/models/active_model_article_with_custom_index_name.rb
|
310
|
-
- test/models/
|
280
|
+
- test/models/active_record_models.rb
|
311
281
|
- test/models/article.rb
|
312
282
|
- test/models/persistent_article.rb
|
313
283
|
- test/models/persistent_articles_with_custom_index_name.rb
|
@@ -334,6 +304,7 @@ files:
|
|
334
304
|
- test/unit/search_test.rb
|
335
305
|
- test/unit/tire_test.rb
|
336
306
|
- tire.gemspec
|
307
|
+
has_rdoc: true
|
337
308
|
homepage: http://github.com/karmi/tire
|
338
309
|
licenses: []
|
339
310
|
|
@@ -346,13 +317,13 @@ post_install_message: |
|
|
346
317
|
|
347
318
|
IMPORTANT CHANGES LATELY:
|
348
319
|
|
349
|
-
#
|
350
|
-
#
|
351
|
-
#
|
352
|
-
#
|
353
|
-
#
|
320
|
+
# By default, results are wrapped in Item class (05a1331)
|
321
|
+
# Completely rewritten ActiveModel/ActiveRecord support
|
322
|
+
# Added method to items for loading the "real" model from database (f9273bc)
|
323
|
+
# Added the ':load' option to eagerly load results from database (1e34cde)
|
324
|
+
# Deprecated the dynamic sort methods, use the 'sort { by :field_name }' syntax
|
354
325
|
|
355
|
-
See the full changelog at <http://github.com/karmi/tire/commits/v0.
|
326
|
+
See the full changelog at <http://github.com/karmi/tire/commits/v0.2.0>.
|
356
327
|
|
357
328
|
--------------------------------------------------------------------------------
|
358
329
|
|
@@ -361,20 +332,16 @@ rdoc_options:
|
|
361
332
|
require_paths:
|
362
333
|
- lib
|
363
334
|
required_ruby_version: !ruby/object:Gem::Requirement
|
364
|
-
none: false
|
365
335
|
requirements:
|
366
336
|
- - ">="
|
367
337
|
- !ruby/object:Gem::Version
|
368
|
-
hash: 3
|
369
338
|
segments:
|
370
339
|
- 0
|
371
340
|
version: "0"
|
372
341
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
373
|
-
none: false
|
374
342
|
requirements:
|
375
343
|
- - ">="
|
376
344
|
- !ruby/object:Gem::Version
|
377
|
-
hash: 23
|
378
345
|
segments:
|
379
346
|
- 1
|
380
347
|
- 3
|
@@ -383,7 +350,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
383
350
|
requirements: []
|
384
351
|
|
385
352
|
rubyforge_project: tire
|
386
|
-
rubygems_version: 1.
|
353
|
+
rubygems_version: 1.3.6
|
387
354
|
signing_key:
|
388
355
|
specification_version: 3
|
389
356
|
summary: Ruby client for ElasticSearch
|
@@ -409,7 +376,7 @@ test_files:
|
|
409
376
|
- test/models/active_model_article.rb
|
410
377
|
- test/models/active_model_article_with_callbacks.rb
|
411
378
|
- test/models/active_model_article_with_custom_index_name.rb
|
412
|
-
- test/models/
|
379
|
+
- test/models/active_record_models.rb
|
413
380
|
- test/models/article.rb
|
414
381
|
- test/models/persistent_article.rb
|
415
382
|
- test/models/persistent_articles_with_custom_index_name.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'active_record'
|
3
|
-
|
4
|
-
class ActiveRecordArticle < ActiveRecord::Base
|
5
|
-
include Tire::Model::Search
|
6
|
-
include Tire::Model::Callbacks
|
7
|
-
|
8
|
-
mapping do
|
9
|
-
indexes :title, :type => 'string', :boost => 10, :analyzer => 'snowball'
|
10
|
-
indexes :created_at, :type => 'date'
|
11
|
-
end
|
12
|
-
end
|