tire 0.3.11 → 0.3.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -359,7 +359,7 @@ example Rails application, with an `ActiveRecord` model and a search form, to pl
359
359
  (it even downloads _ElasticSearch_ itself, generates the application skeleton and leaves you with
360
360
  a _Git_ repository to explore the steps and the code):
361
361
 
362
- $ rails new searchapp -m https://github.com/karmi/tire/raw/master/examples/rails-application-template.rb
362
+ $ rails new searchapp -m https://raw.github.com/karmi/tire/master/examples/rails-application-template.rb
363
363
 
364
364
  For the rest of us, let's suppose you have an `Article` class in your _Rails_ application.
365
365
 
@@ -48,7 +48,7 @@ module Tire
48
48
  @mapping ||= {}
49
49
  if block_given?
50
50
  @mapping_options = args.pop
51
- @store_mapping = true and yield and @store_mapping = false
51
+ yield
52
52
  create_elasticsearch_index
53
53
  else
54
54
  @mapping
@@ -99,10 +99,6 @@ module Tire
99
99
  "(The original exception was: #{e.inspect})"
100
100
  end
101
101
 
102
- def store_mapping?
103
- @store_mapping || false
104
- end
105
-
106
102
  def mapping_options
107
103
  @mapping_options || {}
108
104
  end
@@ -14,7 +14,7 @@ module Tire
14
14
  properties << name.to_s unless properties.include?(name.to_s)
15
15
  define_query_method name.to_sym
16
16
  define_attribute_methods [name.to_sym]
17
- mapping[name] = options if store_mapping?
17
+ mapping[name] = options
18
18
  self
19
19
  end
20
20
 
@@ -153,7 +153,7 @@ module Tire
153
153
  #
154
154
  def to_indexed_json
155
155
  if instance.class.tire.mapping.empty?
156
- instance.to_hash.to_json
156
+ instance.to_hash.reject {|key,_| key.to_s == 'id' || key.to_s == 'type' }.to_json
157
157
  else
158
158
  instance.to_hash.
159
159
  reject { |key, value| ! instance.class.tire.mapping.keys.map(&:to_s).include?(key.to_s) }.
@@ -1,11 +1,11 @@
1
1
  module Tire
2
- VERSION = "0.3.11"
2
+ VERSION = "0.3.12"
3
3
 
4
4
  CHANGELOG =<<-END
5
5
  IMPORTANT CHANGES LATELY:
6
6
 
7
- * Fixes and improvements for Logger [#142]
8
- * Better handling of search exceptions [#145]
9
- * Removed pinning Rake to specific version
7
+ * Loosened dependency specification for Bundler
8
+ * Do not store `id` and `type` properties in ES _source document
9
+ * Refactorings
10
10
  END
11
11
  end
@@ -336,8 +336,6 @@ p response
336
336
  json =~ /"_type":"active_model_article"/ &&
337
337
  json =~ /"_id":"1"/ &&
338
338
  json =~ /"_id":"2"/ &&
339
- json =~ /"id":"1"/ &&
340
- json =~ /"id":"2"/ &&
341
339
  json =~ /"title":"One"/ &&
342
340
  json =~ /"title":"Two"/
343
341
  end.returns(mock_response('{}', 200))
@@ -284,7 +284,6 @@ module Tire
284
284
  with do |url, payload|
285
285
  doc = MultiJson.decode(payload)
286
286
  url == "#{Configuration.url}/persistent_articles/persistent_article/r2d2" &&
287
- doc['id'] == 'r2d2' &&
288
287
  doc['title'] == 'Test' &&
289
288
  doc['published_on'] == nil
290
289
  end.
@@ -309,7 +308,6 @@ module Tire
309
308
  with do |url, payload|
310
309
  doc = MultiJson.decode(payload)
311
310
  url == "#{Configuration.url}/persistent_articles/persistent_article/" &&
312
- doc['id'] == nil &&
313
311
  doc['title'] == 'Test'
314
312
  end.
315
313
  returns(mock_response('{"ok":true,"_id":"1"}'))
@@ -323,7 +321,6 @@ module Tire
323
321
  with do |url, payload|
324
322
  doc = MultiJson.decode(payload)
325
323
  url == "#{Configuration.url}/persistent_articles/persistent_article/123" &&
326
- doc['id'] == '123' &&
327
324
  doc['title'] == 'Test' &&
328
325
  doc['published_on'] == nil
329
326
  end.
@@ -344,7 +341,6 @@ module Tire
344
341
  with do |url, payload|
345
342
  doc = MultiJson.decode(payload)
346
343
  url == "#{Configuration.url}/persistent_articles/persistent_article/1" &&
347
- doc['id'] == '1' &&
348
344
  doc['title'] == 'Test' &&
349
345
  doc['published_on'] == nil
350
346
  end.
@@ -357,7 +353,6 @@ module Tire
357
353
  with do |url, payload|
358
354
  doc = MultiJson.decode(payload)
359
355
  url == "#{Configuration.url}/persistent_articles/persistent_article/1" &&
360
- doc['id'] == '1' &&
361
356
  doc['title'] == 'Updated'
362
357
  end.
363
358
  returns(mock_response('{"ok":true,"_id":"1"}'))
@@ -369,7 +364,7 @@ module Tire
369
364
  assert ! article.save
370
365
  end
371
366
 
372
- should "set the id property" do
367
+ should "set the id property itself" do
373
368
  article = PersistentArticle.new
374
369
  article.title = 'Test'
375
370
 
@@ -389,7 +384,6 @@ module Tire
389
384
  with do |url, payload|
390
385
  doc = MultiJson.decode(payload)
391
386
  url == "#{Configuration.url}/persistent_articles/persistent_article/456" &&
392
- doc['id'] == '456' &&
393
387
  doc['title'] == 'Test'
394
388
  end.
395
389
  returns(mock_response('{"ok":true,"_id":"XXX"}'))
@@ -406,7 +400,6 @@ module Tire
406
400
  with do |url, payload|
407
401
  doc = MultiJson.decode(payload)
408
402
  url == "#{Configuration.url}/persistent_articles/persistent_article/123" &&
409
- doc['id'] == '123' &&
410
403
  doc['title'] == 'Test'
411
404
  end.returns(mock_response('{"ok":true,"_id":"123"}'))
412
405
 
@@ -515,6 +515,26 @@ module Tire
515
515
  assert_equal({'title' => 'Test'}.to_json, @model.to_indexed_json)
516
516
  end
517
517
 
518
+ should "not include the ID property in serialized document (_source)" do
519
+ @model = ActiveModelArticle.new 'id' => 1, 'title' => 'Test'
520
+ assert_nil MultiJson.decode(@model.to_indexed_json)[:id]
521
+ assert_nil MultiJson.decode(@model.to_indexed_json)['id']
522
+
523
+ @model = SupermodelArticle.new 'id' => 1, 'title' => 'Test'
524
+ assert_nil MultiJson.decode(@model.to_indexed_json)[:id]
525
+ assert_nil MultiJson.decode(@model.to_indexed_json)['id']
526
+ end
527
+
528
+ should "not include the type property in serialized document (_source)" do
529
+ @model = ActiveModelArticle.new 'type' => 'foo', 'title' => 'Test'
530
+ assert_nil MultiJson.decode(@model.to_indexed_json)[:type]
531
+ assert_nil MultiJson.decode(@model.to_indexed_json)['type']
532
+
533
+ @model = SupermodelArticle.new 'type' => 'foo', 'title' => 'Test'
534
+ assert_nil MultiJson.decode(@model.to_indexed_json)[:type]
535
+ assert_nil MultiJson.decode(@model.to_indexed_json)['type']
536
+ end
537
+
518
538
  should "serialize itself with serializable_hash when no mapping is set" do
519
539
 
520
540
  class ::ModelWithoutMapping
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
 
34
34
  # = Development dependencies
35
35
  #
36
- s.add_development_dependency "bundler", "~> 1.0.0"
36
+ s.add_development_dependency "bundler", "~> 1.0"
37
37
  s.add_development_dependency "yajl-ruby", "~> 0.8.0"
38
38
  s.add_development_dependency "shoulda"
39
39
  s.add_development_dependency "mocha"
metadata CHANGED
@@ -1,196 +1,254 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: tire
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.11
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 12
10
+ version: 0.3.12
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Karel Minarik
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-11-11 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2011-11-29 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: rake
16
- requirement: &70153535363240 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
17
25
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
22
33
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70153535363240
25
- - !ruby/object:Gem::Dependency
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
26
36
  name: rest-client
27
- requirement: &70153535362700 !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
28
39
  none: false
29
- requirements:
40
+ requirements:
30
41
  - - ~>
31
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
43
+ hash: 15
44
+ segments:
45
+ - 1
46
+ - 6
47
+ - 0
32
48
  version: 1.6.0
33
49
  type: :runtime
34
- prerelease: false
35
- version_requirements: *70153535362700
36
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
37
52
  name: multi_json
38
- requirement: &70153535362200 !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
39
55
  none: false
40
- requirements:
56
+ requirements:
41
57
  - - ~>
42
- - !ruby/object:Gem::Version
43
- version: '1.0'
58
+ - !ruby/object:Gem::Version
59
+ hash: 15
60
+ segments:
61
+ - 1
62
+ - 0
63
+ version: "1.0"
44
64
  type: :runtime
45
- prerelease: false
46
- version_requirements: *70153535362200
47
- - !ruby/object:Gem::Dependency
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
48
67
  name: activemodel
49
- requirement: &70153535361740 !ruby/object:Gem::Requirement
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
50
70
  none: false
51
- requirements:
71
+ requirements:
52
72
  - - ~>
53
- - !ruby/object:Gem::Version
54
- version: '3.0'
73
+ - !ruby/object:Gem::Version
74
+ hash: 7
75
+ segments:
76
+ - 3
77
+ - 0
78
+ version: "3.0"
55
79
  type: :runtime
56
- prerelease: false
57
- version_requirements: *70153535361740
58
- - !ruby/object:Gem::Dependency
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
59
82
  name: bundler
60
- requirement: &70153535361280 !ruby/object:Gem::Requirement
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
61
85
  none: false
62
- requirements:
86
+ requirements:
63
87
  - - ~>
64
- - !ruby/object:Gem::Version
65
- version: 1.0.0
88
+ - !ruby/object:Gem::Version
89
+ hash: 15
90
+ segments:
91
+ - 1
92
+ - 0
93
+ version: "1.0"
66
94
  type: :development
67
- prerelease: false
68
- version_requirements: *70153535361280
69
- - !ruby/object:Gem::Dependency
95
+ version_requirements: *id005
96
+ - !ruby/object:Gem::Dependency
70
97
  name: yajl-ruby
71
- requirement: &70153535360820 !ruby/object:Gem::Requirement
98
+ prerelease: false
99
+ requirement: &id006 !ruby/object:Gem::Requirement
72
100
  none: false
73
- requirements:
101
+ requirements:
74
102
  - - ~>
75
- - !ruby/object:Gem::Version
103
+ - !ruby/object:Gem::Version
104
+ hash: 63
105
+ segments:
106
+ - 0
107
+ - 8
108
+ - 0
76
109
  version: 0.8.0
77
110
  type: :development
78
- prerelease: false
79
- version_requirements: *70153535360820
80
- - !ruby/object:Gem::Dependency
111
+ version_requirements: *id006
112
+ - !ruby/object:Gem::Dependency
81
113
  name: shoulda
82
- requirement: &70153535360440 !ruby/object:Gem::Requirement
114
+ prerelease: false
115
+ requirement: &id007 !ruby/object:Gem::Requirement
83
116
  none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ hash: 3
121
+ segments:
122
+ - 0
123
+ version: "0"
88
124
  type: :development
89
- prerelease: false
90
- version_requirements: *70153535360440
91
- - !ruby/object:Gem::Dependency
125
+ version_requirements: *id007
126
+ - !ruby/object:Gem::Dependency
92
127
  name: mocha
93
- requirement: &70153535359980 !ruby/object:Gem::Requirement
128
+ prerelease: false
129
+ requirement: &id008 !ruby/object:Gem::Requirement
94
130
  none: false
95
- requirements:
96
- - - ! '>='
97
- - !ruby/object:Gem::Version
98
- version: '0'
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ hash: 3
135
+ segments:
136
+ - 0
137
+ version: "0"
99
138
  type: :development
100
- prerelease: false
101
- version_requirements: *70153535359980
102
- - !ruby/object:Gem::Dependency
139
+ version_requirements: *id008
140
+ - !ruby/object:Gem::Dependency
103
141
  name: activerecord
104
- requirement: &70153535359480 !ruby/object:Gem::Requirement
142
+ prerelease: false
143
+ requirement: &id009 !ruby/object:Gem::Requirement
105
144
  none: false
106
- requirements:
145
+ requirements:
107
146
  - - ~>
108
- - !ruby/object:Gem::Version
147
+ - !ruby/object:Gem::Version
148
+ hash: 9
149
+ segments:
150
+ - 3
151
+ - 0
152
+ - 7
109
153
  version: 3.0.7
110
154
  type: :development
111
- prerelease: false
112
- version_requirements: *70153535359480
113
- - !ruby/object:Gem::Dependency
155
+ version_requirements: *id009
156
+ - !ruby/object:Gem::Dependency
114
157
  name: mongoid
115
- requirement: &70153535358980 !ruby/object:Gem::Requirement
158
+ prerelease: false
159
+ requirement: &id010 !ruby/object:Gem::Requirement
116
160
  none: false
117
- requirements:
161
+ requirements:
118
162
  - - ~>
119
- - !ruby/object:Gem::Version
163
+ - !ruby/object:Gem::Version
164
+ hash: 5
165
+ segments:
166
+ - 2
167
+ - 2
168
+ - 1
120
169
  version: 2.2.1
121
170
  type: :development
122
- prerelease: false
123
- version_requirements: *70153535358980
124
- - !ruby/object:Gem::Dependency
171
+ version_requirements: *id010
172
+ - !ruby/object:Gem::Dependency
125
173
  name: sqlite3
126
- requirement: &70153535358600 !ruby/object:Gem::Requirement
174
+ prerelease: false
175
+ requirement: &id011 !ruby/object:Gem::Requirement
127
176
  none: false
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ hash: 3
181
+ segments:
182
+ - 0
183
+ version: "0"
132
184
  type: :development
133
- prerelease: false
134
- version_requirements: *70153535358600
135
- - !ruby/object:Gem::Dependency
185
+ version_requirements: *id011
186
+ - !ruby/object:Gem::Dependency
136
187
  name: supermodel
137
- requirement: &70153535440320 !ruby/object:Gem::Requirement
188
+ prerelease: false
189
+ requirement: &id012 !ruby/object:Gem::Requirement
138
190
  none: false
139
- requirements:
140
- - - ! '>='
141
- - !ruby/object:Gem::Version
142
- version: '0'
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ hash: 3
195
+ segments:
196
+ - 0
197
+ version: "0"
143
198
  type: :development
144
- prerelease: false
145
- version_requirements: *70153535440320
146
- - !ruby/object:Gem::Dependency
199
+ version_requirements: *id012
200
+ - !ruby/object:Gem::Dependency
147
201
  name: rdoc
148
- requirement: &70153535439880 !ruby/object:Gem::Requirement
202
+ prerelease: false
203
+ requirement: &id013 !ruby/object:Gem::Requirement
149
204
  none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
153
- version: '0'
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ hash: 3
209
+ segments:
210
+ - 0
211
+ version: "0"
154
212
  type: :development
155
- prerelease: false
156
- version_requirements: *70153535439880
157
- - !ruby/object:Gem::Dependency
213
+ version_requirements: *id013
214
+ - !ruby/object:Gem::Dependency
158
215
  name: rcov
159
- requirement: &70153535439460 !ruby/object:Gem::Requirement
216
+ prerelease: false
217
+ requirement: &id014 !ruby/object:Gem::Requirement
160
218
  none: false
161
- requirements:
162
- - - ! '>='
163
- - !ruby/object:Gem::Version
164
- version: '0'
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ hash: 3
223
+ segments:
224
+ - 0
225
+ version: "0"
165
226
  type: :development
166
- prerelease: false
167
- version_requirements: *70153535439460
168
- - !ruby/object:Gem::Dependency
227
+ version_requirements: *id014
228
+ - !ruby/object:Gem::Dependency
169
229
  name: turn
170
- requirement: &70153535439040 !ruby/object:Gem::Requirement
230
+ prerelease: false
231
+ requirement: &id015 !ruby/object:Gem::Requirement
171
232
  none: false
172
- requirements:
173
- - - ! '>='
174
- - !ruby/object:Gem::Version
175
- version: '0'
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ hash: 3
237
+ segments:
238
+ - 0
239
+ version: "0"
176
240
  type: :development
177
- prerelease: false
178
- version_requirements: *70153535439040
179
- description: ! " Tire is a Ruby client for the ElasticSearch search engine/database.\n\n
180
- \ It provides Ruby-like API for fluent communication with the ElasticSearch server\n
181
- \ and blends with ActiveModel class for convenient usage in Rails applications.\n\n
182
- \ It allows to delete and create indices, define mapping for them, supports\n the
183
- bulk API, and presents an easy-to-use DSL for constructing your queries.\n\n It
184
- has full ActiveRecord/ActiveModel compatibility, allowing you to index\n your
185
- models (incrementally upon saving, or in bulk), searching and\n paginating the
186
- results.\n\n Please check the documentation at <http://karmi.github.com/tire/>.\n"
241
+ version_requirements: *id015
242
+ description: " Tire is a Ruby client for the ElasticSearch search engine/database.\n\n It provides Ruby-like API for fluent communication with the ElasticSearch server\n and blends with ActiveModel class for convenient usage in Rails applications.\n\n It allows to delete and create indices, define mapping for them, supports\n the bulk API, and presents an easy-to-use DSL for constructing your queries.\n\n It has full ActiveRecord/ActiveModel compatibility, allowing you to index\n your models (incrementally upon saving, or in bulk), searching and\n paginating the results.\n\n Please check the documentation at <http://karmi.github.com/tire/>.\n"
187
243
  email: karmi@karmi.cz
188
244
  executables: []
245
+
189
246
  extensions: []
190
- extra_rdoc_files:
247
+
248
+ extra_rdoc_files:
191
249
  - README.markdown
192
250
  - MIT-LICENSE
193
- files:
251
+ files:
194
252
  - .gitignore
195
253
  - .travis.yml
196
254
  - Gemfile
@@ -285,36 +343,59 @@ files:
285
343
  - test/unit/search_test.rb
286
344
  - test/unit/tire_test.rb
287
345
  - tire.gemspec
346
+ has_rdoc: true
288
347
  homepage: http://github.com/karmi/tire
289
348
  licenses: []
290
- post_install_message: ! "================================================================================\n\n
291
- \ Please check the documentation at <http://karmi.github.com/tire/>.\n\n--------------------------------------------------------------------------------\n\n
292
- \ IMPORTANT CHANGES LATELY:\n\n * Fixes and improvements for Logger [#142]\n
293
- \ * Better handling of search exceptions [#145]\n * Removed pinning Rake to specific
294
- version\n\n See the full changelog at <http://github.com/karmi/tire/commits/v0.3.11>.\n\n--------------------------------------------------------------------------------\n"
295
- rdoc_options:
349
+
350
+ post_install_message: |
351
+ ================================================================================
352
+
353
+ Please check the documentation at <http://karmi.github.com/tire/>.
354
+
355
+ --------------------------------------------------------------------------------
356
+
357
+ IMPORTANT CHANGES LATELY:
358
+
359
+ * Loosened dependency specification for Bundler
360
+ * Do not store `id` and `type` properties in ES _source document
361
+ * Refactorings
362
+
363
+ See the full changelog at <http://github.com/karmi/tire/commits/v0.3.12>.
364
+
365
+ --------------------------------------------------------------------------------
366
+
367
+ rdoc_options:
296
368
  - --charset=UTF-8
297
- require_paths:
369
+ require_paths:
298
370
  - lib
299
- required_ruby_version: !ruby/object:Gem::Requirement
371
+ required_ruby_version: !ruby/object:Gem::Requirement
300
372
  none: false
301
- requirements:
302
- - - ! '>='
303
- - !ruby/object:Gem::Version
304
- version: '0'
305
- required_rubygems_version: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - ">="
375
+ - !ruby/object:Gem::Version
376
+ hash: 3
377
+ segments:
378
+ - 0
379
+ version: "0"
380
+ required_rubygems_version: !ruby/object:Gem::Requirement
306
381
  none: false
307
- requirements:
308
- - - ! '>='
309
- - !ruby/object:Gem::Version
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ hash: 23
386
+ segments:
387
+ - 1
388
+ - 3
389
+ - 6
310
390
  version: 1.3.6
311
391
  requirements: []
392
+
312
393
  rubyforge_project: tire
313
- rubygems_version: 1.8.10
394
+ rubygems_version: 1.6.2
314
395
  signing_key:
315
396
  specification_version: 3
316
397
  summary: Ruby client for ElasticSearch
317
- test_files:
398
+ test_files:
318
399
  - test/fixtures/articles/1.json
319
400
  - test/fixtures/articles/2.json
320
401
  - test/fixtures/articles/3.json