tire 0.5.7 → 0.5.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,10 +5,9 @@
5
5
  language: ruby
6
6
 
7
7
  rvm:
8
- - 2.0.0
9
- - 1.9.3
10
8
  - 1.8.7
11
- - ree
9
+ - 1.9.3
10
+ - 2.0.0
12
11
  - jruby-19mode
13
12
 
14
13
  env:
@@ -26,10 +25,6 @@ matrix:
26
25
  exclude:
27
26
  - rvm: 1.8.7
28
27
  env: TEST_COMMAND="rake test:integration"
29
- - rvm: ree
30
- env: TEST_COMMAND="rake test:integration"
31
- allow_failures:
32
- - rvm: ree
33
28
 
34
29
  notifications:
35
30
  disable: true
@@ -18,9 +18,9 @@ Installation
18
18
 
19
19
  OK. First, you need a running _Elasticsearch_ server. Thankfully, it's easy. Let's define easy:
20
20
 
21
- $ curl -k -L -o elasticsearch-0.20.2.tar.gz http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.2.tar.gz
22
- $ tar -zxvf elasticsearch-0.20.2.tar.gz
23
- $ ./elasticsearch-0.20.2/bin/elasticsearch -f
21
+ $ curl -k -L -o elasticsearch-0.20.6.tar.gz http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.6.tar.gz
22
+ $ tar -zxvf elasticsearch-0.20.6.tar.gz
23
+ $ ./elasticsearch-0.20.6/bin/elasticsearch -f
24
24
 
25
25
  See, easy. On a Mac, you can also use _Homebrew_:
26
26
 
@@ -62,7 +62,7 @@ file ".gitignore", <<-END.gsub(/ /, '')
62
62
  tmp/**/*
63
63
  config/database.yml
64
64
  db/*.sqlite3
65
- vendor/elasticsearch-0.20.2/
65
+ vendor/elasticsearch-0.20.6/
66
66
  END
67
67
 
68
68
  git :init
@@ -71,11 +71,11 @@ git :commit => "-m 'Initial commit: Clean application'"
71
71
 
72
72
  unless (RestClient.get('http://localhost:9200') rescue false)
73
73
  COMMAND = <<-COMMAND.gsub(/^ /, '')
74
- curl -k -L -# -o elasticsearch-0.20.2.tar.gz \
75
- "http://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.20.2.tar.gz"
76
- tar -zxf elasticsearch-0.20.2.tar.gz
77
- rm -f elasticsearch-0.20.2.tar.gz
78
- ./elasticsearch-0.20.2/bin/elasticsearch -p #{destination_root}/tmp/pids/elasticsearch.pid
74
+ curl -k -L -# -o elasticsearch-0.20.6.tar.gz \
75
+ "http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.6.tar.gz"
76
+ tar -zxf elasticsearch-0.20.6.tar.gz
77
+ rm -f elasticsearch-0.20.6.tar.gz
78
+ ./elasticsearch-0.20.6/bin/elasticsearch -p #{destination_root}/tmp/pids/elasticsearch.pid
79
79
  COMMAND
80
80
 
81
81
  puts "\n"
@@ -58,7 +58,7 @@ module Tire
58
58
  end
59
59
 
60
60
  # Store mapping for the property:
61
- mapping[name] = options
61
+ mapping[name] = { :type => 'string' }.merge(options)
62
62
  self
63
63
  end
64
64
 
@@ -17,8 +17,11 @@ module Tire
17
17
  def create(args={})
18
18
  document = new(args)
19
19
  return false unless document.valid?
20
- document.save
21
- document
20
+ if result = document.save
21
+ document
22
+ else
23
+ result
24
+ end
22
25
  end
23
26
  end
24
27
 
@@ -36,33 +39,34 @@ module Tire
36
39
  def update_index
37
40
  run_callbacks :update_elasticsearch_index do
38
41
  if destroyed?
39
- index.remove self
42
+ response = index.remove self
40
43
  else
41
- response = index.store( self, {:percolate => percolator} )
42
- self.id ||= response['_id']
43
- self._index = response['_index']
44
- self._type = response['_type']
45
- self._version = response['_version']
46
- self.matches = response['matches']
47
- self
44
+ if response = index.store( self, {:percolate => percolator} )
45
+ self.id ||= response['_id']
46
+ self._index = response['_index']
47
+ self._type = response['_type']
48
+ self._version = response['_version']
49
+ self.matches = response['matches']
50
+ end
48
51
  end
52
+ response
49
53
  end
50
54
  end
51
55
 
52
56
  def save
53
57
  return false unless valid?
54
58
  run_callbacks :save do
55
- update_index
59
+ response = update_index
60
+ !! response['ok']
56
61
  end
57
- self
58
62
  end
59
63
 
60
64
  def destroy
61
65
  run_callbacks :destroy do
62
66
  @destroyed = true
63
- update_index
67
+ response = update_index
68
+ ! response.nil?
64
69
  end
65
- self.freeze
66
70
  end
67
71
 
68
72
  def destroyed? ; !!@destroyed; end
@@ -136,7 +136,7 @@ module Tire
136
136
  "based on _type '#{type}'.", e.backtrace
137
137
  end
138
138
 
139
- records[type] = __find_records_by_ids klass, items.map { |h| h['_id'] }
139
+ records[type] = Array(__find_records_by_ids klass, items.map { |h| h['_id'] })
140
140
  end
141
141
 
142
142
  # Reorder records to preserve the order from search results
@@ -60,7 +60,11 @@ module Tire
60
60
 
61
61
  def to_hash
62
62
  @attributes.reduce({}) do |sum, item|
63
- sum[ item.first ] = item.last.respond_to?(:to_hash) ? item.last.to_hash : item.last
63
+ if item.last.is_a?(Array)
64
+ sum[ item.first ] = item.last.map { |item| item.respond_to?(:to_hash) ? item.to_hash : item }
65
+ else
66
+ sum[ item.first ] = item.last.respond_to?(:to_hash) ? item.last.to_hash : item.last
67
+ end
64
68
  sum
65
69
  end
66
70
  end
@@ -5,8 +5,6 @@ module Tire
5
5
  module Tasks
6
6
 
7
7
  module Import
8
- HRULE = '='*90
9
-
10
8
  def delete_index(index)
11
9
  puts "[IMPORT] Deleting index '#{index.name}'"
12
10
  index.delete
@@ -95,7 +93,7 @@ namespace :tire do
95
93
  end
96
94
 
97
95
  if ENV['CLASS'].to_s == ''
98
- puts HRULE, 'USAGE', HRULE, import_model_desc, ""
96
+ puts '='*90, 'USAGE', '='*90, import_model_desc, ""
99
97
  exit(1)
100
98
  end
101
99
 
@@ -1,12 +1,14 @@
1
1
  module Tire
2
- VERSION = "0.5.7"
2
+ VERSION = "0.5.8"
3
3
 
4
4
  CHANGELOG =<<-END
5
5
  IMPORTANT CHANGES LATELY:
6
6
 
7
- * Added support for the `constant_score` query
8
- * Prevent `Curl::Err::MultiBadEasyHandle` errors in the Curb client
9
- * Refactored the model importing integration and Rake tasks
10
- * Enabled passing options to the `terms` query
7
+ * Fixed, that Model::Persistence uses "string" as the default mapping type
8
+ * Fixed, that Model::Persistence returns true/false for #save and #destroy operations
9
+ * Fixed the `uninitialized constant HRULE` in Rake tasks
10
+ * Fixed `Item#to_hash` functionality to work with Arrays
11
+ * Updated the Rails application template and install instructions
12
+ * Improved the test suite for Travis
11
13
  END
12
14
  end
@@ -69,7 +69,7 @@ module Tire
69
69
 
70
70
  a.index.refresh
71
71
  results = SupermodelArticle.search 'test'
72
-
72
+
73
73
  assert_equal 0, results.count
74
74
  end
75
75
 
@@ -90,21 +90,26 @@ module Tire
90
90
 
91
91
  setup do
92
92
  module ::Rails; end
93
+ @article = SupermodelArticle.new :title => 'Test'
94
+ @article.save
95
+ @article.index.refresh
93
96
  end
94
97
 
95
- should "load the underlying model" do
96
- a = SupermodelArticle.new :title => 'Test'
97
- a.save
98
- a.index.refresh
99
-
98
+ should "fake the underlying model with _source" do
100
99
  results = SupermodelArticle.search 'test'
101
100
 
102
101
  assert_instance_of Results::Item, results.first
103
102
  assert_instance_of SupermodelArticle, results.first.load
104
-
105
103
  assert_equal 'Test', results.first.load.title
106
104
  end
107
105
 
106
+ should "load the record from database" do
107
+ results = SupermodelArticle.search 'test', load: true
108
+
109
+ assert_instance_of SupermodelArticle, results.first
110
+ assert_equal 'Test', results.first.title
111
+ end
112
+
108
113
  end
109
114
 
110
115
  end
@@ -134,6 +134,20 @@ module Tire
134
134
  assert_equal ActiveRecordArticle.find(1), results.first
135
135
  end
136
136
 
137
+ should "load single record" do
138
+ a = ActiveRecordArticle.create :title => 'foo'
139
+ a.save
140
+ a.index.refresh
141
+
142
+ results = ActiveRecordArticle.search load: true do
143
+ query { string 'title:foo' }
144
+ end
145
+
146
+ assert_instance_of ActiveRecordArticle, results.first
147
+ assert_equal 'foo', results.first.title
148
+ assert_equal 3, a.length # Make sure we have the "real model"
149
+ end
150
+
137
151
  should "load records with options on query search" do
138
152
  assert_equal ActiveRecordArticle.find(['1'], :include => 'comments').first,
139
153
  ActiveRecordArticle.search('"Test 1"',
@@ -598,9 +612,14 @@ module Tire
598
612
 
599
613
  context "percolated search" do
600
614
  setup do
615
+ delete_registered_queries
616
+ delete_percolator_index if ENV['TRAVIS']
601
617
  ActiveRecordModelWithPercolation.index.register_percolator_query('alert') { string 'warning' }
602
618
  Tire.index('_percolator').refresh
603
- sleep 0.2
619
+ end
620
+
621
+ teardown do
622
+ ActiveRecordModelWithPercolation.index.unregister_percolator_query('alert') { string 'warning' }
604
623
  end
605
624
 
606
625
  should "return matching queries when percolating" do
@@ -616,6 +635,16 @@ module Tire
616
635
 
617
636
  end
618
637
 
638
+ private
639
+
640
+ def delete_registered_queries
641
+ Configuration.client.delete("#{Configuration.url}/_percolator/active_record_model_with_percolations/alert") rescue nil
642
+ end
643
+
644
+ def delete_percolator_index
645
+ Configuration.client.delete("#{Configuration.url}/_percolator") rescue nil
646
+ end
647
+
619
648
  end
620
649
 
621
650
  end
@@ -8,7 +8,7 @@ module Tire
8
8
  context "Boosting queries" do
9
9
 
10
10
  should "allow to set multiple queries per condition" do
11
- s = Tire.search('articles-test') do
11
+ s = Tire.search('articles-test', search_type: 'dfs_query_then_fetch') do
12
12
  query do
13
13
  boosting negative_boost: 0.2 do
14
14
  positive { string "title:Two title:One tags:ruby tags:python" }
@@ -25,7 +25,8 @@ module Tire
25
25
  setup do
26
26
  # Tire.configure { logger STDERR }
27
27
  @index = Tire.index('featured-results-test') do
28
- delete; create
28
+ delete
29
+ create
29
30
  store title: 'Kitchen special tool', featured: true
30
31
  store title: 'Kitchen tool tool tool', featured: false
31
32
  store title: 'Garage tool', featured: false
@@ -38,7 +39,7 @@ module Tire
38
39
  end
39
40
 
40
41
  should "return featured results first" do
41
- s = Tire.search('featured-results-test') do
42
+ s = Tire.search('featured-results-test', search_type: 'dfs_query_then_fetch') do
42
43
  query do
43
44
  boosting negative_boost: 0.1 do
44
45
  positive do
@@ -25,7 +25,8 @@ module Tire
25
25
  # Adapted from: http://www.fullscale.co/blog/2013/01/24/Implementing_Featured_Results_With_ElasticSearch.html
26
26
  setup do
27
27
  @index = Tire.index('featured-results-test') do
28
- delete; create
28
+ delete
29
+ create
29
30
  store title: 'Kitchen special tool', featured: true
30
31
  store title: 'Kitchen tool tool tool', featured: false
31
32
  store title: 'Garage tool', featured: false
@@ -39,7 +40,7 @@ module Tire
39
40
 
40
41
 
41
42
  should "return featured results first" do
42
- s = Tire.search('featured-results-test') do
43
+ s = Tire.search('featured-results-test', search_type: 'dfs_query_then_fetch') do
43
44
  query do
44
45
  boolean do
45
46
  should do
@@ -8,11 +8,13 @@ module Tire
8
8
  context "Percolator" do
9
9
  setup do
10
10
  delete_registered_queries
11
+ delete_percolator_index if ENV['TRAVIS']
11
12
  @index = Tire.index('percolator-test')
12
13
  @index.create
13
14
  end
14
15
  teardown do
15
16
  delete_registered_queries
17
+ delete_percolator_index if ENV['TRAVIS']
16
18
  @index.delete
17
19
  end
18
20
 
@@ -101,11 +103,15 @@ module Tire
101
103
  private
102
104
 
103
105
  def delete_registered_queries
104
- Configuration.client.get("#{Configuration.url}/_percolator/percolator-test/alert") rescue nil
105
- Configuration.client.get("#{Configuration.url}/_percolator/percolator-test/gantz") rescue nil
106
- Configuration.client.get("#{Configuration.url}/_percolator/percolator-test/weather") rescue nil
106
+ Configuration.client.delete("#{Configuration.url}/_percolator/percolator-test/alert") rescue nil
107
+ Configuration.client.delete("#{Configuration.url}/_percolator/percolator-test/gantz") rescue nil
108
+ Configuration.client.delete("#{Configuration.url}/_percolator/percolator-test/weather") rescue nil
107
109
  end
108
110
 
109
- end unless ENV['TRAVIS']
111
+ def delete_percolator_index
112
+ Configuration.client.delete("#{Configuration.url}/_percolator") rescue nil
113
+ end
114
+
115
+ end
110
116
 
111
117
  end
@@ -7,13 +7,16 @@ module Tire
7
7
 
8
8
  def setup
9
9
  super
10
- PersistentArticle.index.delete
10
+ PersistentArticle.create_elasticsearch_index
11
+ PersistentArticleWithDefaults.create_elasticsearch_index
12
+ PersistentArticleWithStrictMapping.create_elasticsearch_index
11
13
  end
12
14
 
13
15
  def teardown
14
16
  super
15
17
  PersistentArticle.index.delete
16
18
  PersistentArticleWithDefaults.index.delete
19
+ PersistentArticleWithStrictMapping.index.delete
17
20
  end
18
21
 
19
22
  context "PersistentModel" do
@@ -184,9 +187,14 @@ module Tire
184
187
 
185
188
  context "percolated search" do
186
189
  setup do
190
+ delete_registered_queries
191
+ delete_percolator_index if ENV['TRAVIS']
187
192
  PersistentArticleWithPercolation.index.register_percolator_query('alert') { string 'warning' }
188
193
  Tire.index('_percolator').refresh
189
- sleep 0.2
194
+ end
195
+
196
+ teardown do
197
+ PersistentArticleWithPercolation.index.unregister_percolator_query('alert') { string 'warning' }
190
198
  end
191
199
 
192
200
  should "return matching queries when percolating" do
@@ -200,6 +208,35 @@ module Tire
200
208
  end
201
209
  end
202
210
 
211
+ context "with strict mapping" do
212
+ should "successfuly save valid model" do
213
+ a = PersistentArticleWithStrictMapping.create :title => 'Test'
214
+ assert a.save
215
+ end
216
+ should "return false when creating fails" do
217
+ a = PersistentArticleWithStrictMapping.create :created => 'NOTVALID'
218
+ assert_equal false, a
219
+ end
220
+ should "return false when saving fails for invalid format" do
221
+ a = PersistentArticleWithStrictMapping.new :created => 'NOTVALID'
222
+ assert_equal false, a.save
223
+ end
224
+ should "return false when saving fails for unmapped property" do
225
+ a = PersistentArticleWithStrictMapping.new :myproperty => true
226
+ assert_equal false, a.save
227
+ end
228
+ end
229
+
230
+ end
231
+
232
+ private
233
+
234
+ def delete_registered_queries
235
+ Configuration.client.delete("#{Configuration.url}/_percolator/persistent_article_with_percolations/alert") rescue nil
236
+ end
237
+
238
+ def delete_percolator_index
239
+ Configuration.client.delete("#{Configuration.url}/_percolator") rescue nil
203
240
  end
204
241
 
205
242
  end
@@ -6,7 +6,7 @@ class PersistentArticleWithDefaults
6
6
  property :published_on
7
7
  property :tags, :default => []
8
8
  property :hidden, :default => false
9
- property :options, :default => {:switches => []}
9
+ property :options, :type => 'object', :default => {:switches => []}
10
10
  property :created_at, :default => lambda { Time.now }
11
11
 
12
12
  end
@@ -0,0 +1,26 @@
1
+ # Example class with Elasticsearch persistence and strict mapping
2
+
3
+ class PersistentArticleWithStrictMapping
4
+
5
+ include Tire::Model::Persistence
6
+
7
+ mapping :dynamic => 'strict' do
8
+ property :title, :type => 'string'
9
+ property :created, :type => 'date'
10
+ end
11
+
12
+ def myproperty
13
+ @myproperty
14
+ end
15
+
16
+ def myproperty= value
17
+ self.class.properties << 'myproperty'
18
+ @myproperty = value
19
+ end
20
+
21
+ def to_indexed_json
22
+ json = { :title => self.title, :created => self.created }
23
+ json[:myproperty] = 'NOTVALID' if self.myproperty
24
+ json.to_json
25
+ end
26
+ end
@@ -25,9 +25,9 @@ else
25
25
  require 'sqlite3'
26
26
  end
27
27
 
28
- require 'shoulda'
29
- require 'turn/autorun' unless ENV["TM_FILEPATH"] || JRUBY
28
+ require 'shoulda-context'
30
29
  require 'mocha/setup'
30
+ require 'turn/autorun' unless ENV["TM_FILEPATH"] || JRUBY
31
31
 
32
32
  require 'active_support/core_ext/hash/indifferent_access'
33
33
 
@@ -51,6 +51,7 @@ require File.dirname(__FILE__) + '/models/persistent_article_in_index'
51
51
  require File.dirname(__FILE__) + '/models/persistent_article_in_namespace'
52
52
  require File.dirname(__FILE__) + '/models/persistent_article_with_casting'
53
53
  require File.dirname(__FILE__) + '/models/persistent_article_with_defaults'
54
+ require File.dirname(__FILE__) + '/models/persistent_article_with_strict_mapping'
54
55
  require File.dirname(__FILE__) + '/models/persistent_articles_with_custom_index_name'
55
56
  require File.dirname(__FILE__) + '/models/validated_model'
56
57
 
@@ -50,6 +50,10 @@ module Tire
50
50
  end
51
51
  end
52
52
 
53
+ should "define property as a string by default" do
54
+ assert_equal 'string', PersistentArticle.mapping[:title][:type]
55
+ end
56
+
53
57
  end
54
58
 
55
59
  context "Finders" do
@@ -387,10 +391,6 @@ module Tire
387
391
  assert ! ValidatedModel.create(:name => nil)
388
392
  end
389
393
 
390
- end
391
-
392
- context "when creating" do
393
-
394
394
  should "set the id property" do
395
395
  Configuration.client.expects(:post).
396
396
  with do |url, payload|
@@ -418,6 +418,14 @@ module Tire
418
418
  assert_equal '123', article.id
419
419
  end
420
420
 
421
+ should "return false when the operation fails" do
422
+ Configuration.client.expects(:post).
423
+ returns(mock_response('{"ok":false}', 400))
424
+
425
+ article = PersistentArticleWithStrictMapping.create :title => 'Test'
426
+ assert_equal false, article
427
+ end
428
+
421
429
  end
422
430
 
423
431
  context "when saving" do
@@ -479,6 +487,14 @@ module Tire
479
487
  assert_equal '456', article.id
480
488
  end
481
489
 
490
+ should "return false when the operation fails" do
491
+ Configuration.client.expects(:post).
492
+ returns(mock_response('{"ok":false}', 400))
493
+
494
+ article = PersistentArticleWithStrictMapping.new
495
+ assert_equal false, article.save
496
+ end
497
+
482
498
  end
483
499
 
484
500
  context "when destroying" do
@@ -500,6 +516,14 @@ module Tire
500
516
  article.destroy
501
517
  end
502
518
 
519
+ should "return false when the operation fails" do
520
+ Configuration.client.expects(:delete).
521
+ returns(mock_response('{"ok":false}', 400))
522
+
523
+ article = PersistentArticleWithStrictMapping.new
524
+ assert_equal false, article.destroy
525
+ end
526
+
503
527
  end
504
528
 
505
529
  context "when updating attributes" do
@@ -519,6 +543,14 @@ module Tire
519
543
  assert_equal ['three'], @article.tags
520
544
  end
521
545
 
546
+ should "return false when the operation fails" do
547
+ Configuration.client.expects(:post).
548
+ returns(mock_response('{"ok":false}', 400))
549
+
550
+ article = PersistentArticleWithStrictMapping.new
551
+ assert_equal false, article.update_attributes(:created => 'NOTVALID')
552
+ end
553
+
522
554
  end
523
555
 
524
556
  end
@@ -529,6 +561,7 @@ module Tire
529
561
  expected = {
530
562
  :settings => {},
531
563
  :mappings => { :persistent_article_with_mapping => {
564
+ :dynamic => 'strict',
532
565
  :properties => { :title => { :type => 'string', :analyzer => 'snowball', :boost => 10 } }
533
566
  }}
534
567
  }
@@ -542,7 +575,7 @@ module Tire
542
575
  include Tire::Model::Search
543
576
  include Tire::Model::Callbacks
544
577
 
545
- mapping do
578
+ mapping :dynamic => 'strict' do
546
579
  property :title, :type => 'string', :analyzer => 'snowball', :boost => 10
547
580
  end
548
581
 
@@ -15,9 +15,12 @@ module Tire
15
15
  context "Item" do
16
16
 
17
17
  setup do
18
- @document = Results::Item.new :title => 'Test',
19
- :author => { :name => 'Kafka' },
20
- :awards => { :best_fiction => { :year => '1925' } }
18
+ @document = Results::Item.new :title => 'Test',
19
+ :author => { :name => 'Kafka' },
20
+ :awards => { :best_fiction => { :year => '1925' } },
21
+ :reviews => [ { :stars => 5, :comment => 'great' },
22
+ { :stars => 3, :comment => 'decent' } ]
23
+
21
24
  end
22
25
 
23
26
  should "be initialized with a Hash or Hash like object" do
@@ -115,6 +118,8 @@ module Tire
115
118
  assert_instance_of Hash, @document.to_hash
116
119
  assert_instance_of Hash, @document.to_hash[:author]
117
120
  assert_instance_of Hash, @document.to_hash[:awards][:best_fiction]
121
+ assert_instance_of Hash, @document.to_hash[:reviews][0]
122
+ assert_instance_of Hash, @document.to_hash[:reviews][1]
118
123
 
119
124
  assert_equal 'Kafka', @document.to_hash[:author][:name]
120
125
  assert_equal '1925', @document.to_hash[:awards][:best_fiction][:year]
@@ -37,7 +37,7 @@ Gem::Specification.new do |s|
37
37
  # = Development dependencies
38
38
  #
39
39
  s.add_development_dependency "bundler", "~> 1.0"
40
- s.add_development_dependency "shoulda"
40
+ s.add_development_dependency "shoulda-context"
41
41
  s.add_development_dependency "mocha", "~> 0.13"
42
42
  s.add_development_dependency "minitest", "~> 2.12"
43
43
  s.add_development_dependency "activerecord", ">= 3.0"
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.7
4
+ version: 0.5.8
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: 2013-03-29 00:00:00.000000000 Z
12
+ date: 2013-05-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70194433555660 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70194433555660
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rest-client
27
- requirement: &70194433570860 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '1.6'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70194433570860
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.6'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: multi_json
38
- requirement: &70194433569820 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '1.3'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70194433569820
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: activemodel
49
- requirement: &70194433569360 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '3.0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *70194433569360
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '3.0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: hashr
60
- requirement: &70194433568860 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ~>
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: 0.0.19
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *70194433568860
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.19
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: activesupport
71
- requirement: &70194433568460 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0'
77
102
  type: :runtime
78
103
  prerelease: false
79
- version_requirements: *70194433568460
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: ansi
82
- requirement: &70194433567980 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :runtime
89
119
  prerelease: false
90
- version_requirements: *70194433567980
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: bundler
93
- requirement: &70194433567480 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ~>
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '1.0'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *70194433567480
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: '1.0'
102
142
  - !ruby/object:Gem::Dependency
103
- name: shoulda
104
- requirement: &70194433567060 !ruby/object:Gem::Requirement
143
+ name: shoulda-context
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,10 +149,15 @@ dependencies:
109
149
  version: '0'
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *70194433567060
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  - !ruby/object:Gem::Dependency
114
159
  name: mocha
115
- requirement: &70194433566520 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
116
161
  none: false
117
162
  requirements:
118
163
  - - ~>
@@ -120,10 +165,15 @@ dependencies:
120
165
  version: '0.13'
121
166
  type: :development
122
167
  prerelease: false
123
- version_requirements: *70194433566520
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: '0.13'
124
174
  - !ruby/object:Gem::Dependency
125
175
  name: minitest
126
- requirement: &70194433566020 !ruby/object:Gem::Requirement
176
+ requirement: !ruby/object:Gem::Requirement
127
177
  none: false
128
178
  requirements:
129
179
  - - ~>
@@ -131,10 +181,15 @@ dependencies:
131
181
  version: '2.12'
132
182
  type: :development
133
183
  prerelease: false
134
- version_requirements: *70194433566020
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ~>
188
+ - !ruby/object:Gem::Version
189
+ version: '2.12'
135
190
  - !ruby/object:Gem::Dependency
136
191
  name: activerecord
137
- requirement: &70194433565560 !ruby/object:Gem::Requirement
192
+ requirement: !ruby/object:Gem::Requirement
138
193
  none: false
139
194
  requirements:
140
195
  - - ! '>='
@@ -142,10 +197,15 @@ dependencies:
142
197
  version: '3.0'
143
198
  type: :development
144
199
  prerelease: false
145
- version_requirements: *70194433565560
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '3.0'
146
206
  - !ruby/object:Gem::Dependency
147
207
  name: mongoid
148
- requirement: &70194433565100 !ruby/object:Gem::Requirement
208
+ requirement: !ruby/object:Gem::Requirement
149
209
  none: false
150
210
  requirements:
151
211
  - - ~>
@@ -153,10 +213,15 @@ dependencies:
153
213
  version: '2.2'
154
214
  type: :development
155
215
  prerelease: false
156
- version_requirements: *70194433565100
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ~>
220
+ - !ruby/object:Gem::Version
221
+ version: '2.2'
157
222
  - !ruby/object:Gem::Dependency
158
223
  name: redis-persistence
159
- requirement: &70194433564720 !ruby/object:Gem::Requirement
224
+ requirement: !ruby/object:Gem::Requirement
160
225
  none: false
161
226
  requirements:
162
227
  - - ! '>='
@@ -164,10 +229,15 @@ dependencies:
164
229
  version: '0'
165
230
  type: :development
166
231
  prerelease: false
167
- version_requirements: *70194433564720
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
168
238
  - !ruby/object:Gem::Dependency
169
239
  name: faraday
170
- requirement: &70194433564240 !ruby/object:Gem::Requirement
240
+ requirement: !ruby/object:Gem::Requirement
171
241
  none: false
172
242
  requirements:
173
243
  - - ! '>='
@@ -175,10 +245,15 @@ dependencies:
175
245
  version: '0'
176
246
  type: :development
177
247
  prerelease: false
178
- version_requirements: *70194433564240
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
179
254
  - !ruby/object:Gem::Dependency
180
255
  name: yajl-ruby
181
- requirement: &70194433563700 !ruby/object:Gem::Requirement
256
+ requirement: !ruby/object:Gem::Requirement
182
257
  none: false
183
258
  requirements:
184
259
  - - ~>
@@ -186,10 +261,15 @@ dependencies:
186
261
  version: '1.0'
187
262
  type: :development
188
263
  prerelease: false
189
- version_requirements: *70194433563700
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ none: false
266
+ requirements:
267
+ - - ~>
268
+ - !ruby/object:Gem::Version
269
+ version: '1.0'
190
270
  - !ruby/object:Gem::Dependency
191
271
  name: sqlite3
192
- requirement: &70194433579480 !ruby/object:Gem::Requirement
272
+ requirement: !ruby/object:Gem::Requirement
193
273
  none: false
194
274
  requirements:
195
275
  - - ! '>='
@@ -197,10 +277,15 @@ dependencies:
197
277
  version: '0'
198
278
  type: :development
199
279
  prerelease: false
200
- version_requirements: *70194433579480
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ none: false
282
+ requirements:
283
+ - - ! '>='
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
201
286
  - !ruby/object:Gem::Dependency
202
287
  name: bson_ext
203
- requirement: &70194433578800 !ruby/object:Gem::Requirement
288
+ requirement: !ruby/object:Gem::Requirement
204
289
  none: false
205
290
  requirements:
206
291
  - - ! '>='
@@ -208,10 +293,15 @@ dependencies:
208
293
  version: '0'
209
294
  type: :development
210
295
  prerelease: false
211
- version_requirements: *70194433578800
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ none: false
298
+ requirements:
299
+ - - ! '>='
300
+ - !ruby/object:Gem::Version
301
+ version: '0'
212
302
  - !ruby/object:Gem::Dependency
213
303
  name: curb
214
- requirement: &70194433577800 !ruby/object:Gem::Requirement
304
+ requirement: !ruby/object:Gem::Requirement
215
305
  none: false
216
306
  requirements:
217
307
  - - ! '>='
@@ -219,10 +309,15 @@ dependencies:
219
309
  version: '0'
220
310
  type: :development
221
311
  prerelease: false
222
- version_requirements: *70194433577800
312
+ version_requirements: !ruby/object:Gem::Requirement
313
+ none: false
314
+ requirements:
315
+ - - ! '>='
316
+ - !ruby/object:Gem::Version
317
+ version: '0'
223
318
  - !ruby/object:Gem::Dependency
224
319
  name: oj
225
- requirement: &70194433577180 !ruby/object:Gem::Requirement
320
+ requirement: !ruby/object:Gem::Requirement
226
321
  none: false
227
322
  requirements:
228
323
  - - ! '>='
@@ -230,10 +325,15 @@ dependencies:
230
325
  version: '0'
231
326
  type: :development
232
327
  prerelease: false
233
- version_requirements: *70194433577180
328
+ version_requirements: !ruby/object:Gem::Requirement
329
+ none: false
330
+ requirements:
331
+ - - ! '>='
332
+ - !ruby/object:Gem::Version
333
+ version: '0'
234
334
  - !ruby/object:Gem::Dependency
235
335
  name: turn
236
- requirement: &70194433576120 !ruby/object:Gem::Requirement
336
+ requirement: !ruby/object:Gem::Requirement
237
337
  none: false
238
338
  requirements:
239
339
  - - ~>
@@ -241,7 +341,12 @@ dependencies:
241
341
  version: '0.9'
242
342
  type: :development
243
343
  prerelease: false
244
- version_requirements: *70194433576120
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ none: false
346
+ requirements:
347
+ - - ~>
348
+ - !ruby/object:Gem::Version
349
+ version: '0.9'
245
350
  description: ! " Tire is a Ruby client for the Elasticsearch search engine/database.\n\n
246
351
  \ It provides Ruby-like API for fluent communication with the Elasticsearch server\n
247
352
  \ and blends with ActiveModel class for convenient usage in Rails applications.\n\n
@@ -362,6 +467,7 @@ files:
362
467
  - test/models/persistent_article_with_casting.rb
363
468
  - test/models/persistent_article_with_defaults.rb
364
469
  - test/models/persistent_article_with_percolation.rb
470
+ - test/models/persistent_article_with_strict_mapping.rb
365
471
  - test/models/persistent_articles_with_custom_index_name.rb
366
472
  - test/models/supermodel_article.rb
367
473
  - test/models/validated_model.rb
@@ -397,10 +503,12 @@ homepage: http://github.com/karmi/tire
397
503
  licenses: []
398
504
  post_install_message: ! "================================================================================\n\n
399
505
  \ Please check the documentation at <http://karmi.github.com/tire/>.\n\n--------------------------------------------------------------------------------\n\n
400
- \ IMPORTANT CHANGES LATELY:\n\n * Added support for the `constant_score` query\n
401
- \ * Prevent `Curl::Err::MultiBadEasyHandle` errors in the Curb client\n * Refactored
402
- the model importing integration and Rake tasks\n * Enabled passing options to the
403
- `terms` query\n\n See the full changelog at <http://github.com/karmi/tire/commits/v0.5.7>.\n\n--------------------------------------------------------------------------------\n"
506
+ \ IMPORTANT CHANGES LATELY:\n\n * Fixed, that Model::Persistence uses \"string\"
507
+ as the default mapping type\n * Fixed, that Model::Persistence returns true/false
508
+ for #save and #destroy operations\n * Fixed the `uninitialized constant HRULE`
509
+ in Rake tasks\n * Fixed `Item#to_hash` functionality to work with Arrays\n * Updated
510
+ the Rails application template and install instructions\n * Improved the test suite
511
+ for Travis\n\n See the full changelog at <http://github.com/karmi/tire/commits/v0.5.8>.\n\n--------------------------------------------------------------------------------\n"
404
512
  rdoc_options:
405
513
  - --charset=UTF-8
406
514
  require_paths:
@@ -419,7 +527,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
419
527
  version: 1.3.6
420
528
  requirements: []
421
529
  rubyforge_project: tire
422
- rubygems_version: 1.8.11
530
+ rubygems_version: 1.8.23
423
531
  signing_key:
424
532
  specification_version: 3
425
533
  summary: Ruby client for Elasticsearch
@@ -479,6 +587,7 @@ test_files:
479
587
  - test/models/persistent_article_with_casting.rb
480
588
  - test/models/persistent_article_with_defaults.rb
481
589
  - test/models/persistent_article_with_percolation.rb
590
+ - test/models/persistent_article_with_strict_mapping.rb
482
591
  - test/models/persistent_articles_with_custom_index_name.rb
483
592
  - test/models/supermodel_article.rb
484
593
  - test/models/validated_model.rb