tire 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/tire/dsl.rb CHANGED
@@ -33,7 +33,7 @@ module Tire
33
33
  # Build and perform a [multi-search](http://elasticsearch.org/guide/reference/api/multi-search.html)
34
34
  # request.
35
35
  #
36
- # s = Tire.search 'clients' do
36
+ # s = Tire.multi_search 'clients' do
37
37
  # search :names do
38
38
  # query { match :name, 'carpenter' }
39
39
  # end
data/lib/tire/index.rb CHANGED
@@ -90,7 +90,7 @@ module Tire
90
90
  logged([type, id].join('/'), curl)
91
91
  end
92
92
 
93
- # Performs a [multi-search](http://www.elasticsearch.org/guide/reference/api/bulk.html) request
93
+ # Performs a [bulk](http://www.elasticsearch.org/guide/reference/api/bulk.html) request
94
94
  #
95
95
  # @myindex.bulk :index, [ {id: 1, title: 'One'}, { id: 2, title: 'Two', _version: 3 } ], refresh: true
96
96
  #
@@ -115,7 +115,9 @@ module Tire
115
115
  type = get_type_from_document(document, :escape => false) # Do not URL-escape the _type
116
116
  id = get_id_from_document(document)
117
117
 
118
- STDERR.puts "[ERROR] Document #{document.inspect} does not have ID" unless id
118
+ if ENV['DEBUG']
119
+ STDERR.puts "[ERROR] Document #{document.inspect} does not have ID" unless id
120
+ end
119
121
 
120
122
  header = { action.to_sym => { :_index => name, :_type => type, :_id => id } }
121
123
 
@@ -373,10 +375,11 @@ module Tire
373
375
  code = @response ? @response.code : error.class rescue 'N/A'
374
376
 
375
377
  if Configuration.logger.level.to_s == 'debug'
376
- body = if @response
377
- MultiJson.encode( MultiJson.load(@response.body), :pretty => Configuration.pretty)
378
- else
379
- MultiJson.encode( MultiJson.load(error.message), :pretty => Configuration.pretty) rescue ''
378
+ body = if @response && @response.body && !@response.body.to_s.empty?
379
+ MultiJson.encode( MultiJson.load(@response.body), :pretty => Configuration.pretty)
380
+ elsif error && error.message && !error.message.to_s.empty?
381
+ MultiJson.encode( MultiJson.load(error.message), :pretty => Configuration.pretty) rescue ''
382
+ else ''
380
383
  end
381
384
  else
382
385
  body = ''
@@ -412,7 +415,7 @@ module Tire
412
415
  when document.is_a?(Hash)
413
416
  document[:_id] || document['_id'] || document[:id] || document['id']
414
417
  when document.respond_to?(:id) && document.id != document.object_id
415
- document.id
418
+ document.id.as_json
416
419
  end
417
420
  $VERBOSE = old_verbose
418
421
  id
@@ -421,8 +424,10 @@ module Tire
421
424
  def convert_document_to_json(document)
422
425
  document = case
423
426
  when document.is_a?(String)
424
- Tire.warn "Passing the document as JSON string in Index#store has been deprecated, " +
425
- "please pass an object which responds to `to_indexed_json` or a plain Hash."
427
+ if ENV['DEBUG']
428
+ Tire.warn "Passing the document as JSON string has been deprecated, " +
429
+ "please pass an object which responds to `to_indexed_json` or a plain Hash."
430
+ end
426
431
  document
427
432
  when document.respond_to?(:to_indexed_json) then document.to_indexed_json
428
433
  else raise ArgumentError, "Please pass a JSON string or object with a 'to_indexed_json' method," +
@@ -45,7 +45,7 @@ module Tire
45
45
 
46
46
  include Persistence::Storage
47
47
 
48
- ['_score', '_type', '_index', '_version', 'sort', 'highlight', 'matches', '_explanation'].each do |attr|
48
+ ['_score', '_type', '_index', '_version', 'sort', 'highlight', '_explanation'].each do |attr|
49
49
  define_method("#{attr}=") { |value| @attributes ||= {}; @attributes[attr] = value }
50
50
  define_method("#{attr}") { @attributes[attr] }
51
51
  end
@@ -150,7 +150,7 @@ module Tire
150
150
  instance._index = response['_index'] if instance.respond_to?(:_index=)
151
151
  instance._type = response['_type'] if instance.respond_to?(:_type=)
152
152
  instance._version = response['_version'] if instance.respond_to?(:_version=)
153
- instance.matches = response['matches'] if instance.respond_to?(:matches=)
153
+ instance.tire.matches = response['matches'] if instance.tire.respond_to?(:matches=)
154
154
  self
155
155
  end
156
156
  end
@@ -194,11 +194,17 @@ module Tire
194
194
  end
195
195
 
196
196
  def matches
197
- @attributes['matches']
197
+ instance.instance_eval do
198
+ @attributes ||= {}
199
+ @attributes['tire__matches']
200
+ end
198
201
  end
199
202
 
200
203
  def matches=(value)
201
- @attributes ||= {}; @attributes['matches'] = value
204
+ instance.instance_eval do
205
+ @attributes ||= {}
206
+ @attributes['tire__matches'] = value
207
+ end
202
208
  end
203
209
 
204
210
  end
@@ -26,7 +26,7 @@ module Tire
26
26
  @attributes[method_name.to_sym]
27
27
  end
28
28
 
29
- def respond_to?(method_name)
29
+ def respond_to?(method_name, include_private = false)
30
30
  @attributes.has_key?(method_name.to_sym) || super
31
31
  end
32
32
 
@@ -11,52 +11,53 @@ module Tire
11
11
  def initialize(name, options={}, &block)
12
12
  @name = name
13
13
  @options = options
14
+ @value = {}
14
15
  block.arity < 1 ? self.instance_eval(&block) : block.call(self) if block_given?
15
16
  end
16
17
 
17
18
  def terms(field, options={})
18
19
  size = options.delete(:size) || 10
19
20
  all_terms = options.delete(:all_terms) || false
20
- @value = if field.is_a?(Enumerable) and not field.is_a?(String)
21
- { :terms => { :fields => field }.update({ :size => size, :all_terms => all_terms }).update(options) }
21
+ @value[:terms] = if field.is_a?(Enumerable) and not field.is_a?(String)
22
+ { :fields => field }.update({ :size => size, :all_terms => all_terms }).update(options)
22
23
  else
23
- { :terms => { :field => field }.update({ :size => size, :all_terms => all_terms }).update(options) }
24
+ { :field => field }.update({ :size => size, :all_terms => all_terms }).update(options)
24
25
  end
25
26
  self
26
27
  end
27
28
 
28
29
  def date(field, options={})
29
30
  interval = options.delete(:interval) || 'day'
30
- @value = { :date_histogram => { :field => field, :interval => interval }.update(options) }
31
+ @value[:date_histogram] = { :field => field, :interval => interval }.update(options)
31
32
  self
32
33
  end
33
34
 
34
35
  def range(field, ranges=[], options={})
35
- @value = { :range => { :field => field, :ranges => ranges }.update(options) }
36
+ @value[:range] = { :field => field, :ranges => ranges }.update(options)
36
37
  self
37
38
  end
38
39
 
39
40
  def histogram(field, options={})
40
- @value = { :histogram => (options.delete(:histogram) || {:field => field}.update(options)) }
41
+ @value[:histogram] = (options.delete(:histogram) || {:field => field}.update(options))
41
42
  self
42
43
  end
43
44
 
44
45
  def statistical(field, options={})
45
- @value = { :statistical => (options.delete(:statistical) || {:field => field}.update(options)) }
46
+ @value[:statistical] = (options.delete(:statistical) || {:field => field}.update(options))
46
47
  self
47
48
  end
48
49
 
49
50
  def terms_stats(key_field, value_field, options={})
50
- @value = { :terms_stats => {:key_field => key_field, :value_field => value_field}.update(options) }
51
+ @value[:terms_stats] = {:key_field => key_field, :value_field => value_field}.update(options)
51
52
  self
52
53
  end
53
54
 
54
55
  def query(&block)
55
- @value = { :query => Query.new(&block).to_hash }
56
+ @value[:query] = Query.new(&block).to_hash
56
57
  end
57
58
 
58
59
  def filter(type, options={})
59
- @value = { :filter => Filter.new(type, options) }
60
+ @value[:filter] = Filter.new(type, options)
60
61
  self
61
62
  end
62
63
 
data/lib/tire/version.rb CHANGED
@@ -1,36 +1,12 @@
1
1
  module Tire
2
- VERSION = "0.5.1"
2
+ VERSION = "0.5.2"
3
3
 
4
4
  CHANGELOG =<<-END
5
5
  IMPORTANT CHANGES LATELY:
6
6
 
7
- * [!BREAKING!] Change format of sort/order in simple model searches to <field>:<direction>
8
- * [FIX] Remove `page` and `per_page` from parameters sent to elasticsearch
9
- * [FIX] Remove the `wrapper` options from URL params sent to elasticsearch
10
- * [FIX] Use `options.delete(:sort)` in model search to halt bubbling of `sort` into URL parameters [#334]
11
- * Added prettified JSON output for logging requests and responses at the `debug` level
12
- * Improved the Rake import task
13
- * Allow passing of arbitrary objects in the `:as` mapping option [#446]
14
- * Allow to define default values for Tire::Model::Persistence `:as` lambdas
15
- * Added `@search.results.max_score`
16
- * Changed the URI escape/unescape compatibility patch to not require Rack
17
- * Allow using the full DSL in filter facets
18
- * Allow complex hash options for the `term` query
19
- * Allow passing Hash-like objects to `terms` query as well
20
- * Implemented `respond_to?` for `Item`
21
- * Improved support for Kaminari pagination
22
- * Added support for the `parent` URL parameter in `Index#store`
23
- * Added the `min_score` and `track_scores` DSL methods
24
- * Added support for loading partial fields
25
- * Added support for boosting query
26
- * Added the `facet_filter` DSL method
27
- * Allow passing `routing`, `fields` and `preference` URL parameter to Index#retrieve
28
- * Allow building the search request step-by-step in Tire's DSL [#496]
29
- * Added a `match` query type
30
- * Added support for multisearch (_msearch) and the `Tire.multi_search` DSL method
31
- * Added support for multi-search in the ActiveModel integration and in Tire::Model::Persistence
32
- * Added support for create and delete actions for Index#bulk
33
- * Added support for meta information (`_routing`, `_parent`, etc) in Index#bulk
34
- * Added support for URL parameters (`refresh`, `consistency`) in Index#bulk
7
+ * Fixed bugs in the `matches` Tire method in models
8
+ * Fixed JSON parser errors when logging empty bodies
9
+ * Allow arbitrary ordering of methods in the facet DSL block
10
+ * Fix issues with Mongoid gem (incorrect JSON serialization of Moped::BSON::ObjectId)
35
11
  END
36
12
  end
@@ -18,6 +18,8 @@ module Tire
18
18
  teardown do
19
19
  @index.delete
20
20
  Tire.index('bulk-test-fresh').delete
21
+ Tire.index('bulk-test-consistency').delete
22
+ Tire.index('bulk-test-routing').delete
21
23
  end
22
24
 
23
25
  should "store a collection of documents and refresh the index" do
@@ -26,12 +28,15 @@ module Tire
26
28
  end
27
29
 
28
30
  should "extract the routing value from documents" do
29
- @index.bulk_store [ { id: '1', title: 'A', _routing: 'a'}, { id: '2', title: 'B', _routing: 'b'} ]
30
- @index.refresh
31
-
32
- assert_equal 2, Tire.search('bulk-test') { query {all} }.results.size
33
- assert_equal 1, Tire.search('bulk-test', routing: 'a') { query {all} }.results.size
34
- assert_equal 1, Tire.search('bulk-test', routing: 'b') { query {all} }.results.size
31
+ index = Tire.index('bulk-test-routing')
32
+ index.delete
33
+ index.create index: { number_of_shards: 2, number_of_replicas: 0 }
34
+ index.bulk_store [ { id: '1', title: 'A', _routing: 'a'}, { id: '2', title: 'B', _routing: 'b'} ]
35
+ index.refresh
36
+
37
+ assert_equal 2, Tire.search('bulk-test-routing') { query {all} }.results.size
38
+ assert_equal 1, Tire.search('bulk-test-routing', routing: 'a') { query {all} }.results.size
39
+ assert_equal 1, Tire.search('bulk-test-routing', routing: 'b') { query {all} }.results.size
35
40
  end
36
41
 
37
42
  should "delete documents in bulk" do
@@ -61,14 +66,14 @@ module Tire
61
66
  should "timeout when consistency factor is not met" do
62
67
  # Tire.configure { logger STDERR, level: 'debug' }
63
68
 
64
- Tire.index 'bulk-test' do
69
+ Tire.index 'bulk-test-consistency' do
65
70
  delete
66
71
  create index: { number_of_shards: 1, number_of_replicas: 15 }
67
72
  end
68
73
 
69
74
  assert_raise Timeout::Error do
70
75
  Timeout::timeout(3) do
71
- Tire.index('bulk-test').bulk_store [ {id: '1', title: 'One' } ],
76
+ Tire.index('bulk-test-consistency').bulk_store [ {id: '1', title: 'One' } ],
72
77
  consistency: 'all',
73
78
  raise: true
74
79
  end
@@ -70,8 +70,19 @@ module Tire
70
70
  assert_equal 1, s.results.facets.size
71
71
  assert_equal 'ruby', s.results.facets['tags']['terms'].first['term']
72
72
  assert_equal 1, s.results.facets['tags']['terms'].first['count'].to_i
73
- end
73
+ end
74
+
75
+ should "allow arbitrary order of methods in the DSL block" do
76
+ s = Tire.search('articles-test', :search_type => 'count') do
77
+ facet 'tags' do
78
+ facet_filter :range, { :published_on => { :from => '2011-01-01', :to => '2011-01-01' } }
79
+ terms :tags
80
+ end
81
+ end
74
82
 
83
+ assert_equal 1, s.results.facets.size
84
+ assert_equal 'ruby', s.results.facets['tags']['terms'].first['term']
85
+ assert_equal 1, s.results.facets['tags']['terms'].first['count'].to_i
75
86
  end
76
87
 
77
88
  context "terms" do
@@ -265,8 +276,8 @@ module Tire
265
276
  assert_equal 2, facets["count"], facets.inspect
266
277
  end
267
278
 
268
- end
279
+ end
269
280
 
281
+ end
270
282
  end
271
-
272
283
  end
@@ -56,7 +56,7 @@ module Tire
56
56
  end
57
57
 
58
58
  assert_equal 3, s.results.count
59
- assert_equal %w(Four One Two), s.results.map(&:title)
59
+ assert_equal %w(Four One Two), s.results.map(&:title).sort
60
60
  end
61
61
 
62
62
  end
@@ -19,6 +19,18 @@ module Tire
19
19
  assert_equal 'Two', s.results.first.title
20
20
  end
21
21
 
22
+ should "filter the results with multiple terms" do
23
+ # 2.json > Is tagged *both* "ruby" and "python"
24
+
25
+ s = Tire.search('articles-test') do
26
+ query { all }
27
+ filter :terms, :tags => ['ruby', 'python'], :execution => 'and'
28
+ end
29
+
30
+ assert_equal 1, s.results.count
31
+ assert_equal 'Two', s.results.first.title
32
+ end
33
+
22
34
  should "filter the results with multiple 'or' filters" do
23
35
  # 4.json > Begins with "F" and is tagged "erlang"
24
36
 
data/test/test_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ ENV['DEBUG'] = 'true'
2
+
1
3
  require 'rubygems'
2
4
  require 'bundler/setup'
3
5
 
@@ -304,6 +304,25 @@ module Tire
304
304
  @index.store Article.new(:id => 123, :title => 'Test', :body => 'Lorem')
305
305
  end
306
306
 
307
+ should "convert document ID to string or number" do
308
+ # This is related to issues #529, #535:
309
+ # When using Mongoid and the Yajl gem, document IDs from Mongo (Moped::BSON::ObjectId)
310
+ # are incorrectly serialized to JSON, and documents are stored with incorrect, auto-generated IDs.
311
+ class Document1; def id; "one"; end; end
312
+ class Document2; def id; 1; end; end
313
+ class Document3; class ID; def as_json; 'c'; end; end
314
+ def id; ID.new; end
315
+ end
316
+
317
+ document_1 = Document1.new
318
+ document_2 = Document2.new
319
+ document_3 = Document3.new
320
+
321
+ assert_equal 'one', @index.get_id_from_document(document_1)
322
+ assert_equal 1, @index.get_id_from_document(document_2)
323
+ assert_equal 'c', @index.get_id_from_document(document_3)
324
+ end
325
+
307
326
  end
308
327
 
309
328
  end
@@ -67,6 +67,7 @@ module Tire
67
67
 
68
68
  should "implement respond_to? for proxied methods" do
69
69
  assert @document.respond_to?(:title)
70
+ assert @document.respond_to?(:title, true)
70
71
  end
71
72
 
72
73
  should "return nil for non-existing keys/methods" do
@@ -73,6 +73,15 @@ module Tire::Search
73
73
  f['foo'][:facet_filter].to_json )
74
74
  end
75
75
 
76
+ should "allow arbitrary ordering of methods in the DSL block" do
77
+ f = Facet.new('foo') do
78
+ facet_filter :terms, :tags => ['ruby']
79
+ terms :published_on
80
+ end.to_hash
81
+
82
+ assert_equal( { :terms => {:tags => ['ruby'] }}.to_json, f['foo'][:facet_filter].to_json)
83
+ end
84
+
76
85
  end
77
86
 
78
87
  context "terms facet" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-11 00:00:00.000000000 Z
12
+ date: 2012-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70241536312360 !ruby/object:Gem::Requirement
16
+ requirement: &70285950165900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70241536312360
24
+ version_requirements: *70285950165900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &70241536310740 !ruby/object:Gem::Requirement
27
+ requirement: &70285950165360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.6'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70241536310740
35
+ version_requirements: *70285950165360
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: multi_json
38
- requirement: &70241536309980 !ruby/object:Gem::Requirement
38
+ requirement: &70285950164860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70241536309980
46
+ version_requirements: *70285950164860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activemodel
49
- requirement: &70241536309040 !ruby/object:Gem::Requirement
49
+ requirement: &70285950164400 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '3.0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70241536309040
57
+ version_requirements: *70285950164400
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hashr
60
- requirement: &70241536306480 !ruby/object:Gem::Requirement
60
+ requirement: &70285950163940 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.0.19
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70241536306480
68
+ version_requirements: *70285950163940
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &70241536322700 !ruby/object:Gem::Requirement
71
+ requirement: &70285950163480 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '1.0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70241536322700
79
+ version_requirements: *70285950163480
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: yajl-ruby
82
- requirement: &70241536322000 !ruby/object:Gem::Requirement
82
+ requirement: &70285950163020 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '1.0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70241536322000
90
+ version_requirements: *70285950163020
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: shoulda
93
- requirement: &70241536321420 !ruby/object:Gem::Requirement
93
+ requirement: &70285950162640 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70241536321420
101
+ version_requirements: *70285950162640
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: mocha
104
- requirement: &70241536320760 !ruby/object:Gem::Requirement
104
+ requirement: &70285950162180 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70241536320760
112
+ version_requirements: *70285950162180
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: minitest
115
- requirement: &70241536320180 !ruby/object:Gem::Requirement
115
+ requirement: &70285950161680 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '2.12'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70241536320180
123
+ version_requirements: *70285950161680
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: activerecord
126
- requirement: &70241536319540 !ruby/object:Gem::Requirement
126
+ requirement: &70285950161180 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: '3.0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70241536319540
134
+ version_requirements: *70285950161180
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: sqlite3
137
- requirement: &70241536319060 !ruby/object:Gem::Requirement
137
+ requirement: &70285950160800 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *70241536319060
145
+ version_requirements: *70285950160800
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: mongoid
148
- requirement: &70241536318220 !ruby/object:Gem::Requirement
148
+ requirement: &70285950160260 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: '2.2'
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *70241536318220
156
+ version_requirements: *70285950160260
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: bson_ext
159
- requirement: &70241536317400 !ruby/object:Gem::Requirement
159
+ requirement: &70285950159840 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ! '>='
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: '0'
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *70241536317400
167
+ version_requirements: *70285950159840
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: redis-persistence
170
- requirement: &70241536316820 !ruby/object:Gem::Requirement
170
+ requirement: &70285959011600 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - ! '>='
@@ -175,10 +175,10 @@ dependencies:
175
175
  version: '0'
176
176
  type: :development
177
177
  prerelease: false
178
- version_requirements: *70241536316820
178
+ version_requirements: *70285959011600
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: curb
181
- requirement: &70241536316100 !ruby/object:Gem::Requirement
181
+ requirement: &70285959011180 !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
184
184
  - - ! '>='
@@ -186,10 +186,10 @@ dependencies:
186
186
  version: '0'
187
187
  type: :development
188
188
  prerelease: false
189
- version_requirements: *70241536316100
189
+ version_requirements: *70285959011180
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: oj
192
- requirement: &70241536339520 !ruby/object:Gem::Requirement
192
+ requirement: &70285959010760 !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
195
195
  - - ! '>='
@@ -197,10 +197,10 @@ dependencies:
197
197
  version: '0'
198
198
  type: :development
199
199
  prerelease: false
200
- version_requirements: *70241536339520
200
+ version_requirements: *70285959010760
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: turn
203
- requirement: &70241536336900 !ruby/object:Gem::Requirement
203
+ requirement: &70285959010220 !ruby/object:Gem::Requirement
204
204
  none: false
205
205
  requirements:
206
206
  - - ~>
@@ -208,7 +208,7 @@ dependencies:
208
208
  version: '0.9'
209
209
  type: :development
210
210
  prerelease: false
211
- version_requirements: *70241536336900
211
+ version_requirements: *70285959010220
212
212
  description: ! " Tire is a Ruby client for the ElasticSearch search engine/database.\n\n
213
213
  \ It provides Ruby-like API for fluent communication with the ElasticSearch server\n
214
214
  \ and blends with ActiveModel class for convenient usage in Rails applications.\n\n
@@ -359,29 +359,10 @@ homepage: http://github.com/karmi/tire
359
359
  licenses: []
360
360
  post_install_message: ! "================================================================================\n\n
361
361
  \ Please check the documentation at <http://karmi.github.com/tire/>.\n\n--------------------------------------------------------------------------------\n\n
362
- \ IMPORTANT CHANGES LATELY:\n\n * [!BREAKING!] Change format of sort/order in simple
363
- model searches to <field>:<direction>\n * [FIX] Remove `page` and `per_page` from
364
- parameters sent to elasticsearch\n * [FIX] Remove the `wrapper` options from URL
365
- params sent to elasticsearch\n * [FIX] Use `options.delete(:sort)` in model search
366
- to halt bubbling of `sort` into URL parameters [#334]\n * Added prettified JSON
367
- output for logging requests and responses at the `debug` level\n * Improved the
368
- Rake import task\n * Allow passing of arbitrary objects in the `:as` mapping option
369
- [#446]\n * Allow to define default values for Tire::Model::Persistence `:as` lambdas\n
370
- \ * Added `@search.results.max_score`\n * Changed the URI escape/unescape compatibility
371
- patch to not require Rack\n * Allow using the full DSL in filter facets\n * Allow
372
- complex hash options for the `term` query\n * Allow passing Hash-like objects to
373
- `terms` query as well\n * Implemented `respond_to?` for `Item`\n * Improved support
374
- for Kaminari pagination\n * Added support for the `parent` URL parameter in `Index#store`\n
375
- \ * Added the `min_score` and `track_scores` DSL methods\n * Added support for
376
- loading partial fields\n * Added support for boosting query\n * Added the `facet_filter`
377
- DSL method\n * Allow passing `routing`, `fields` and `preference` URL parameter
378
- to Index#retrieve\n * Allow building the search request step-by-step in Tire's
379
- DSL [#496]\n * Added a `match` query type\n * Added support for multisearch (_msearch)
380
- and the `Tire.multi_search` DSL method\n * Added support for multi-search in the
381
- ActiveModel integration and in Tire::Model::Persistence\n * Added support for create
382
- and delete actions for Index#bulk\n * Added support for meta information (`_routing`,
383
- `_parent`, etc) in Index#bulk\n * Added support for URL parameters (`refresh`,
384
- `consistency`) in Index#bulk\n\n See the full changelog at <http://github.com/karmi/tire/commits/v0.5.1>.\n\n--------------------------------------------------------------------------------\n"
362
+ \ IMPORTANT CHANGES LATELY:\n\n * Fixed bugs in the `matches` Tire method in models\n
363
+ \ * Fixed JSON parser errors when logging empty bodies\n * Allow arbitrary ordering
364
+ of methods in the facet DSL block\n * Fix issues with Mongoid gem (incorrect JSON
365
+ serialization of Moped::BSON::ObjectId)\n\n See the full changelog at <http://github.com/karmi/tire/commits/v0.5.2>.\n\n--------------------------------------------------------------------------------\n"
385
366
  rdoc_options:
386
367
  - --charset=UTF-8
387
368
  require_paths: