tire 0.5.7 → 0.5.8

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.
@@ -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