perpetuity 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Version 0.6.2
2
+
3
+ - Make sure `Retrieval#first` limits the query to a single item
4
+ - Add `Mapper#sample`/`Retrieval#sample`
5
+ - Add `Retrieval#drop` to allow skipping a specific number of objects
6
+
1
7
  ## Version 0.6.1
2
8
 
3
9
  - Fix reference equality bug
@@ -183,6 +183,10 @@ module Perpetuity
183
183
  raise ArgumentError.new('Attempted to decrement a non-numeric value')
184
184
  end
185
185
 
186
+ def sample
187
+ all.sample
188
+ end
189
+
186
190
  def persisted? object
187
191
  object.instance_variable_defined?(:@id)
188
192
  end
@@ -79,7 +79,7 @@ module Perpetuity
79
79
  # MongoDB uses '_id' as its ID field.
80
80
  criteria = to_bson_id(criteria)
81
81
 
82
- skipped = options[:page] ? (options[:page] - 1) * options[:limit] : 0
82
+ skipped = options.fetch(:skip) { 0 }
83
83
 
84
84
  query = collection(klass.to_s)
85
85
  .find(criteria)
@@ -3,7 +3,7 @@ require 'perpetuity/reference'
3
3
  module Perpetuity
4
4
  class Retrieval
5
5
  include Enumerable
6
- attr_accessor :sort_attribute, :sort_direction, :result_limit, :result_page, :quantity_per_page
6
+ attr_accessor :sort_attribute, :sort_direction, :result_limit, :result_page, :result_offset
7
7
 
8
8
  def initialize mapper, criteria
9
9
  @mapper = mapper
@@ -29,14 +29,16 @@ module Perpetuity
29
29
 
30
30
  def page page
31
31
  retrieval = clone
32
+ retrieval.result_limit ||= 20
32
33
  retrieval.result_page = page
33
- retrieval.quantity_per_page = 20
34
+ retrieval.result_offset = (page - 1) * retrieval.result_limit
34
35
  retrieval
35
36
  end
36
37
 
37
38
  def per_page per
38
39
  retrieval = clone
39
- retrieval.quantity_per_page = per
40
+ retrieval.result_limit = per
41
+ retrieval.result_offset = (retrieval.result_page - 1) * per
40
42
  retrieval
41
43
  end
42
44
 
@@ -52,12 +54,22 @@ module Perpetuity
52
54
  @data_source.count(@class, @criteria)
53
55
  end
54
56
 
57
+ def first
58
+ limit(1).to_a.first
59
+ end
60
+
61
+ def sample
62
+ sample_size = [count, result_limit].compact.max
63
+ result = drop(rand(sample_size)).first
64
+ result
65
+ end
66
+
55
67
  def options
56
68
  {
57
69
  attribute: sort_attribute,
58
70
  direction: sort_direction,
59
- limit: result_limit || quantity_per_page,
60
- page: result_page
71
+ limit: result_limit,
72
+ skip: result_offset
61
73
  }
62
74
  end
63
75
 
@@ -75,5 +87,12 @@ module Perpetuity
75
87
 
76
88
  retrieval
77
89
  end
90
+
91
+ def drop count
92
+ retrieval = clone
93
+ retrieval.result_offset = count
94
+
95
+ retrieval
96
+ end
78
97
  end
79
98
  end
@@ -1,3 +1,3 @@
1
1
  module Perpetuity
2
- VERSION = "0.6.1"
2
+ VERSION = "0.6.2"
3
3
  end
@@ -184,4 +184,23 @@ describe "retrieval" do
184
184
  ids = users.map { |retrieved_user| mapper.id_for(retrieved_user) }
185
185
  ids.should include mapper.id_for(user)
186
186
  end
187
+
188
+ it 'skips a specified number of objects' do
189
+ author = SecureRandom.hex
190
+ articles = 3.times.map { Article.new(SecureRandom.hex, nil, author) }.sort_by(&:title)
191
+ articles.each { |article| mapper.insert article }
192
+
193
+ ret = mapper.select { |article| article.author == author }.drop(2).sort(:title).first
194
+ ret.should == articles.last
195
+ end
196
+
197
+ describe 'selecting random objects' do
198
+ it 'selects a random object' do
199
+ mapper.delete_all
200
+ articles = 3.times.map { Article.new(SecureRandom.hex) }
201
+ articles.each { |article| mapper.insert article }
202
+
203
+ articles.should include mapper.sample
204
+ end
205
+ end
187
206
  end
@@ -60,7 +60,7 @@ module Perpetuity
60
60
  end
61
61
 
62
62
  describe 'finding a single object' do
63
- let(:options) { {:attribute=>nil, :direction=>nil, :limit=>nil, :page=>nil} }
63
+ let(:options) { {:attribute=>nil, :direction=>nil, :limit=>1, :skip=>nil} }
64
64
  let(:returned_object) { double('Retrieved Object', class: Object) }
65
65
 
66
66
  it 'finds an object by ID' do
@@ -73,6 +73,7 @@ module Perpetuity
73
73
 
74
74
  it 'finds multiple objects with a block' do
75
75
  criteria = { name: 'foo' }
76
+ options = self.options.merge(limit: nil)
76
77
  data_source.should_receive(:retrieve)
77
78
  .with(Object, criteria, options) { [returned_object] }.twice
78
79
 
@@ -35,15 +35,15 @@ module Perpetuity
35
35
  describe 'pagination' do
36
36
  let(:paginated) { retrieval.page(2) }
37
37
  it 'paginates data' do
38
- paginated.result_page.should == 2
38
+ paginated.result_offset.should == 20
39
39
  end
40
40
 
41
41
  it 'defaults to 20 items per page' do
42
- paginated.quantity_per_page.should == 20
42
+ paginated.result_limit.should == 20
43
43
  end
44
44
 
45
45
  it 'sets the number of items per page' do
46
- paginated.per_page(50).quantity_per_page.should == 50
46
+ paginated.per_page(50).result_limit.should == 50
47
47
  end
48
48
  end
49
49
 
@@ -51,7 +51,7 @@ module Perpetuity
51
51
  return_data = { id: 0, a: 1, b: 2 }
52
52
  return_object = Object.new
53
53
  return_object.stub(id: return_data[:id])
54
- options = { attribute: nil, direction: nil, limit: nil, page: nil }
54
+ options = { attribute: nil, direction: nil, limit: nil, skip: nil }
55
55
 
56
56
  data_source.should_receive(:retrieve).with(Object, {}, options).
57
57
  and_return([return_data])
metadata CHANGED
@@ -1,64 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: perpetuity
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.6.2
4
5
  prerelease:
5
- version: 0.6.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jamie Gaskins
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-06 00:00:00.000000000 Z
12
+ date: 2013-06-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ! '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- none: false
21
15
  name: rake
22
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
23
18
  requirements:
24
19
  - - ! '>='
25
20
  - !ruby/object:Gem::Version
26
21
  version: '0'
27
- none: false
28
22
  type: :development
29
23
  prerelease: false
30
- - !ruby/object:Gem::Dependency
31
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
32
26
  requirements:
33
- - - ~>
27
+ - - ! '>='
34
28
  - !ruby/object:Gem::Version
35
- version: 2.8.0
36
- none: false
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
37
31
  name: rspec
38
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
39
34
  requirements:
40
35
  - - ~>
41
36
  - !ruby/object:Gem::Version
42
37
  version: 2.8.0
43
- none: false
44
38
  type: :development
45
39
  prerelease: false
46
- - !ruby/object:Gem::Dependency
47
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
48
42
  requirements:
49
- - - ! '>='
43
+ - - ~>
50
44
  - !ruby/object:Gem::Version
51
- version: '0'
52
- none: false
45
+ version: 2.8.0
46
+ - !ruby/object:Gem::Dependency
53
47
  name: moped
54
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
55
50
  requirements:
56
51
  - - ! '>='
57
52
  - !ruby/object:Gem::Version
58
53
  version: '0'
59
- none: false
60
54
  type: :runtime
61
55
  prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
62
  description: Persistence layer for Ruby objects
63
63
  email:
64
64
  - jgaskins@gmail.com
@@ -66,164 +66,83 @@ executables: []
66
66
  extensions: []
67
67
  extra_rdoc_files: []
68
68
  files:
69
- - !binary |-
70
- LmdpdGlnbm9yZQ==
71
- - !binary |-
72
- LnJ2bXJj
73
- - !binary |-
74
- LnRyYXZpcy55bWw=
75
- - !binary |-
76
- Q0hBTkdFTE9HLm1k
77
- - !binary |-
78
- R2VtZmlsZQ==
79
- - !binary |-
80
- TElDRU5TRQ==
81
- - !binary |-
82
- UkVBRE1FLm1k
83
- - !binary |-
84
- UmFrZWZpbGU=
85
- - !binary |-
86
- bGliL3BlcnBldHVpdHkucmI=
87
- - !binary |-
88
- bGliL3BlcnBldHVpdHkvYXR0cmlidXRlLnJi
89
- - !binary |-
90
- bGliL3BlcnBldHVpdHkvYXR0cmlidXRlX3NldC5yYg==
91
- - !binary |-
92
- bGliL3BlcnBldHVpdHkvY29uZmlnLnJi
93
- - !binary |-
94
- bGliL3BlcnBldHVpdHkvZGF0YV9pbmplY3RhYmxlLnJi
95
- - !binary |-
96
- bGliL3BlcnBldHVpdHkvZGVyZWZlcmVuY2VyLnJi
97
- - !binary |-
98
- bGliL3BlcnBldHVpdHkvZXhjZXB0aW9ucy9kdXBsaWNhdGVfa2V5X2Vycm9y
99
- LnJi
100
- - !binary |-
101
- bGliL3BlcnBldHVpdHkvaWRlbnRpdHlfbWFwLnJi
102
- - !binary |-
103
- bGliL3BlcnBldHVpdHkvbWFwcGVyLnJi
104
- - !binary |-
105
- bGliL3BlcnBldHVpdHkvbWFwcGVyX3JlZ2lzdHJ5LnJi
106
- - !binary |-
107
- bGliL3BlcnBldHVpdHkvbW9uZ29kYi5yYg==
108
- - !binary |-
109
- bGliL3BlcnBldHVpdHkvbW9uZ29kYi9pbmRleC5yYg==
110
- - !binary |-
111
- bGliL3BlcnBldHVpdHkvbW9uZ29kYi9xdWVyeS5yYg==
112
- - !binary |-
113
- bGliL3BlcnBldHVpdHkvbW9uZ29kYi9xdWVyeV9hdHRyaWJ1dGUucmI=
114
- - !binary |-
115
- bGliL3BlcnBldHVpdHkvbW9uZ29kYi9xdWVyeV9leHByZXNzaW9uLnJi
116
- - !binary |-
117
- bGliL3BlcnBldHVpdHkvbW9uZ29kYi9xdWVyeV9pbnRlcnNlY3Rpb24ucmI=
118
- - !binary |-
119
- bGliL3BlcnBldHVpdHkvbW9uZ29kYi9xdWVyeV91bmlvbi5yYg==
120
- - !binary |-
121
- bGliL3BlcnBldHVpdHkvbW9uZ29kYi9zZXJpYWxpemVyLnJi
122
- - !binary |-
123
- bGliL3BlcnBldHVpdHkvcmVmZXJlbmNlLnJi
124
- - !binary |-
125
- bGliL3BlcnBldHVpdHkvcmV0cmlldmFsLnJi
126
- - !binary |-
127
- bGliL3BlcnBldHVpdHkvdmFsaWRhdGlvbnMucmI=
128
- - !binary |-
129
- bGliL3BlcnBldHVpdHkvdmFsaWRhdGlvbnMvbGVuZ3RoLnJi
130
- - !binary |-
131
- bGliL3BlcnBldHVpdHkvdmFsaWRhdGlvbnMvcHJlc2VuY2UucmI=
132
- - !binary |-
133
- bGliL3BlcnBldHVpdHkvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbl9zZXQucmI=
134
- - !binary |-
135
- bGliL3BlcnBldHVpdHkvdmVyc2lvbi5yYg==
136
- - !binary |-
137
- cGVycGV0dWl0eS5nZW1zcGVj
138
- - !binary |-
139
- c3BlYy9pbnRlZ3JhdGlvbi9hc3NvY2lhdGlvbnNfc3BlYy5yYg==
140
- - !binary |-
141
- c3BlYy9pbnRlZ3JhdGlvbi9kZWxldGlvbl9zcGVjLnJi
142
- - !binary |-
143
- c3BlYy9pbnRlZ3JhdGlvbi9lbnVtZXJhYmxlX3NwZWMucmI=
144
- - !binary |-
145
- c3BlYy9pbnRlZ3JhdGlvbi9pbmRleGluZ19zcGVjLnJi
146
- - !binary |-
147
- c3BlYy9pbnRlZ3JhdGlvbi9tb25nb2RiX3NwZWMucmI=
148
- - !binary |-
149
- c3BlYy9pbnRlZ3JhdGlvbi9wYWdpbmF0aW9uX3NwZWMucmI=
150
- - !binary |-
151
- c3BlYy9pbnRlZ3JhdGlvbi9wZXJzaXN0ZW5jZV9zcGVjLnJi
152
- - !binary |-
153
- c3BlYy9pbnRlZ3JhdGlvbi9yZXRyaWV2YWxfc3BlYy5yYg==
154
- - !binary |-
155
- c3BlYy9pbnRlZ3JhdGlvbi9zZXJpYWxpemF0aW9uX3NwZWMucmI=
156
- - !binary |-
157
- c3BlYy9pbnRlZ3JhdGlvbi91cGRhdGVfc3BlYy5yYg==
158
- - !binary |-
159
- c3BlYy9pbnRlZ3JhdGlvbi92YWxpZGF0aW9uc19zcGVjLnJi
160
- - !binary |-
161
- c3BlYy9wZXJwZXR1aXR5L2F0dHJpYnV0ZV9zZXRfc3BlYy5yYg==
162
- - !binary |-
163
- c3BlYy9wZXJwZXR1aXR5L2F0dHJpYnV0ZV9zcGVjLnJi
164
- - !binary |-
165
- c3BlYy9wZXJwZXR1aXR5L2NvbmZpZ19zcGVjLnJi
166
- - !binary |-
167
- c3BlYy9wZXJwZXR1aXR5L2RhdGFfaW5qZWN0YWJsZV9zcGVjLnJi
168
- - !binary |-
169
- c3BlYy9wZXJwZXR1aXR5L2RlcmVmZXJlbmNlcl9zcGVjLnJi
170
- - !binary |-
171
- c3BlYy9wZXJwZXR1aXR5L2lkZW50aXR5X21hcF9zcGVjLnJi
172
- - !binary |-
173
- c3BlYy9wZXJwZXR1aXR5L21hcHBlcl9yZWdpc3RyeV9zcGVjLnJi
174
- - !binary |-
175
- c3BlYy9wZXJwZXR1aXR5L21hcHBlcl9zcGVjLnJi
176
- - !binary |-
177
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvaW5kZXhfc3BlYy5yYg==
178
- - !binary |-
179
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfYXR0cmlidXRlX3NwZWMu
180
- cmI=
181
- - !binary |-
182
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfZXhwcmVzc2lvbl9zcGVj
183
- LnJi
184
- - !binary |-
185
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfaW50ZXJzZWN0aW9uX3Nw
186
- ZWMucmI=
187
- - !binary |-
188
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfc3BlYy5yYg==
189
- - !binary |-
190
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfdW5pb25fc3BlYy5yYg==
191
- - !binary |-
192
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvc2VyaWFsaXplcl9zcGVjLnJi
193
- - !binary |-
194
- c3BlYy9wZXJwZXR1aXR5L3JlZmVyZW5jZV9zcGVjLnJi
195
- - !binary |-
196
- c3BlYy9wZXJwZXR1aXR5L3JldHJpZXZhbF9zcGVjLnJi
197
- - !binary |-
198
- c3BlYy9wZXJwZXR1aXR5L3ZhbGlkYXRpb25zL2xlbmd0aF9zcGVjLnJi
199
- - !binary |-
200
- c3BlYy9wZXJwZXR1aXR5L3ZhbGlkYXRpb25zL3ByZXNlbmNlX3NwZWMucmI=
201
- - !binary |-
202
- c3BlYy9wZXJwZXR1aXR5L3ZhbGlkYXRpb25zX3NwZWMucmI=
203
- - !binary |-
204
- c3BlYy9wZXJwZXR1aXR5X3NwZWMucmI=
205
- - !binary |-
206
- c3BlYy9zcGVjX2hlbHBlci5yYg==
207
- - !binary |-
208
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy5yYg==
209
- - !binary |-
210
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9hcnRpY2xlLnJi
211
- - !binary |-
212
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9ib29rLnJi
213
- - !binary |-
214
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9jYXIucmI=
215
- - !binary |-
216
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9jb21tZW50LnJi
217
- - !binary |-
218
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9jcm1fcGVyc29uLnJi
219
- - !binary |-
220
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9nZW5lcmljX29iamVjdC5yYg==
221
- - !binary |-
222
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9tZXNzYWdlLnJi
223
- - !binary |-
224
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy90b3BpYy5yYg==
225
- - !binary |-
226
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy91c2VyLnJi
69
+ - .gitignore
70
+ - .rvmrc
71
+ - .travis.yml
72
+ - CHANGELOG.md
73
+ - Gemfile
74
+ - LICENSE
75
+ - README.md
76
+ - Rakefile
77
+ - lib/perpetuity.rb
78
+ - lib/perpetuity/attribute.rb
79
+ - lib/perpetuity/attribute_set.rb
80
+ - lib/perpetuity/config.rb
81
+ - lib/perpetuity/data_injectable.rb
82
+ - lib/perpetuity/dereferencer.rb
83
+ - lib/perpetuity/exceptions/duplicate_key_error.rb
84
+ - lib/perpetuity/identity_map.rb
85
+ - lib/perpetuity/mapper.rb
86
+ - lib/perpetuity/mapper_registry.rb
87
+ - lib/perpetuity/mongodb.rb
88
+ - lib/perpetuity/mongodb/index.rb
89
+ - lib/perpetuity/mongodb/query.rb
90
+ - lib/perpetuity/mongodb/query_attribute.rb
91
+ - lib/perpetuity/mongodb/query_expression.rb
92
+ - lib/perpetuity/mongodb/query_intersection.rb
93
+ - lib/perpetuity/mongodb/query_union.rb
94
+ - lib/perpetuity/mongodb/serializer.rb
95
+ - lib/perpetuity/reference.rb
96
+ - lib/perpetuity/retrieval.rb
97
+ - lib/perpetuity/validations.rb
98
+ - lib/perpetuity/validations/length.rb
99
+ - lib/perpetuity/validations/presence.rb
100
+ - lib/perpetuity/validations/validation_set.rb
101
+ - lib/perpetuity/version.rb
102
+ - perpetuity.gemspec
103
+ - spec/integration/associations_spec.rb
104
+ - spec/integration/deletion_spec.rb
105
+ - spec/integration/enumerable_spec.rb
106
+ - spec/integration/indexing_spec.rb
107
+ - spec/integration/mongodb_spec.rb
108
+ - spec/integration/pagination_spec.rb
109
+ - spec/integration/persistence_spec.rb
110
+ - spec/integration/retrieval_spec.rb
111
+ - spec/integration/serialization_spec.rb
112
+ - spec/integration/update_spec.rb
113
+ - spec/integration/validations_spec.rb
114
+ - spec/perpetuity/attribute_set_spec.rb
115
+ - spec/perpetuity/attribute_spec.rb
116
+ - spec/perpetuity/config_spec.rb
117
+ - spec/perpetuity/data_injectable_spec.rb
118
+ - spec/perpetuity/dereferencer_spec.rb
119
+ - spec/perpetuity/identity_map_spec.rb
120
+ - spec/perpetuity/mapper_registry_spec.rb
121
+ - spec/perpetuity/mapper_spec.rb
122
+ - spec/perpetuity/mongodb/index_spec.rb
123
+ - spec/perpetuity/mongodb/query_attribute_spec.rb
124
+ - spec/perpetuity/mongodb/query_expression_spec.rb
125
+ - spec/perpetuity/mongodb/query_intersection_spec.rb
126
+ - spec/perpetuity/mongodb/query_spec.rb
127
+ - spec/perpetuity/mongodb/query_union_spec.rb
128
+ - spec/perpetuity/mongodb/serializer_spec.rb
129
+ - spec/perpetuity/reference_spec.rb
130
+ - spec/perpetuity/retrieval_spec.rb
131
+ - spec/perpetuity/validations/length_spec.rb
132
+ - spec/perpetuity/validations/presence_spec.rb
133
+ - spec/perpetuity/validations_spec.rb
134
+ - spec/perpetuity_spec.rb
135
+ - spec/spec_helper.rb
136
+ - spec/support/test_classes.rb
137
+ - spec/support/test_classes/article.rb
138
+ - spec/support/test_classes/book.rb
139
+ - spec/support/test_classes/car.rb
140
+ - spec/support/test_classes/comment.rb
141
+ - spec/support/test_classes/crm_person.rb
142
+ - spec/support/test_classes/generic_object.rb
143
+ - spec/support/test_classes/message.rb
144
+ - spec/support/test_classes/topic.rb
145
+ - spec/support/test_classes/user.rb
227
146
  homepage: https://github.com/jgaskins/perpetuity.git
228
147
  licenses: []
229
148
  post_install_message:
@@ -231,116 +150,64 @@ rdoc_options: []
231
150
  require_paths:
232
151
  - lib
233
152
  required_ruby_version: !ruby/object:Gem::Requirement
153
+ none: false
234
154
  requirements:
235
155
  - - ! '>='
236
156
  - !ruby/object:Gem::Version
237
- segments:
238
- - 0
239
157
  version: '0'
240
- hash: 2002549777813010636
241
- none: false
242
158
  required_rubygems_version: !ruby/object:Gem::Requirement
159
+ none: false
243
160
  requirements:
244
161
  - - ! '>='
245
162
  - !ruby/object:Gem::Version
246
- segments:
247
- - 0
248
163
  version: '0'
249
- hash: 2002549777813010636
250
- none: false
251
164
  requirements: []
252
165
  rubyforge_project:
253
- rubygems_version: 1.8.25
166
+ rubygems_version: 1.8.24
254
167
  signing_key:
255
168
  specification_version: 3
256
169
  summary: Persistence library allowing serialization of Ruby objects
257
170
  test_files:
258
- - !binary |-
259
- c3BlYy9pbnRlZ3JhdGlvbi9hc3NvY2lhdGlvbnNfc3BlYy5yYg==
260
- - !binary |-
261
- c3BlYy9pbnRlZ3JhdGlvbi9kZWxldGlvbl9zcGVjLnJi
262
- - !binary |-
263
- c3BlYy9pbnRlZ3JhdGlvbi9lbnVtZXJhYmxlX3NwZWMucmI=
264
- - !binary |-
265
- c3BlYy9pbnRlZ3JhdGlvbi9pbmRleGluZ19zcGVjLnJi
266
- - !binary |-
267
- c3BlYy9pbnRlZ3JhdGlvbi9tb25nb2RiX3NwZWMucmI=
268
- - !binary |-
269
- c3BlYy9pbnRlZ3JhdGlvbi9wYWdpbmF0aW9uX3NwZWMucmI=
270
- - !binary |-
271
- c3BlYy9pbnRlZ3JhdGlvbi9wZXJzaXN0ZW5jZV9zcGVjLnJi
272
- - !binary |-
273
- c3BlYy9pbnRlZ3JhdGlvbi9yZXRyaWV2YWxfc3BlYy5yYg==
274
- - !binary |-
275
- c3BlYy9pbnRlZ3JhdGlvbi9zZXJpYWxpemF0aW9uX3NwZWMucmI=
276
- - !binary |-
277
- c3BlYy9pbnRlZ3JhdGlvbi91cGRhdGVfc3BlYy5yYg==
278
- - !binary |-
279
- c3BlYy9pbnRlZ3JhdGlvbi92YWxpZGF0aW9uc19zcGVjLnJi
280
- - !binary |-
281
- c3BlYy9wZXJwZXR1aXR5L2F0dHJpYnV0ZV9zZXRfc3BlYy5yYg==
282
- - !binary |-
283
- c3BlYy9wZXJwZXR1aXR5L2F0dHJpYnV0ZV9zcGVjLnJi
284
- - !binary |-
285
- c3BlYy9wZXJwZXR1aXR5L2NvbmZpZ19zcGVjLnJi
286
- - !binary |-
287
- c3BlYy9wZXJwZXR1aXR5L2RhdGFfaW5qZWN0YWJsZV9zcGVjLnJi
288
- - !binary |-
289
- c3BlYy9wZXJwZXR1aXR5L2RlcmVmZXJlbmNlcl9zcGVjLnJi
290
- - !binary |-
291
- c3BlYy9wZXJwZXR1aXR5L2lkZW50aXR5X21hcF9zcGVjLnJi
292
- - !binary |-
293
- c3BlYy9wZXJwZXR1aXR5L21hcHBlcl9yZWdpc3RyeV9zcGVjLnJi
294
- - !binary |-
295
- c3BlYy9wZXJwZXR1aXR5L21hcHBlcl9zcGVjLnJi
296
- - !binary |-
297
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvaW5kZXhfc3BlYy5yYg==
298
- - !binary |-
299
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfYXR0cmlidXRlX3NwZWMu
300
- cmI=
301
- - !binary |-
302
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfZXhwcmVzc2lvbl9zcGVj
303
- LnJi
304
- - !binary |-
305
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfaW50ZXJzZWN0aW9uX3Nw
306
- ZWMucmI=
307
- - !binary |-
308
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfc3BlYy5yYg==
309
- - !binary |-
310
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvcXVlcnlfdW5pb25fc3BlYy5yYg==
311
- - !binary |-
312
- c3BlYy9wZXJwZXR1aXR5L21vbmdvZGIvc2VyaWFsaXplcl9zcGVjLnJi
313
- - !binary |-
314
- c3BlYy9wZXJwZXR1aXR5L3JlZmVyZW5jZV9zcGVjLnJi
315
- - !binary |-
316
- c3BlYy9wZXJwZXR1aXR5L3JldHJpZXZhbF9zcGVjLnJi
317
- - !binary |-
318
- c3BlYy9wZXJwZXR1aXR5L3ZhbGlkYXRpb25zL2xlbmd0aF9zcGVjLnJi
319
- - !binary |-
320
- c3BlYy9wZXJwZXR1aXR5L3ZhbGlkYXRpb25zL3ByZXNlbmNlX3NwZWMucmI=
321
- - !binary |-
322
- c3BlYy9wZXJwZXR1aXR5L3ZhbGlkYXRpb25zX3NwZWMucmI=
323
- - !binary |-
324
- c3BlYy9wZXJwZXR1aXR5X3NwZWMucmI=
325
- - !binary |-
326
- c3BlYy9zcGVjX2hlbHBlci5yYg==
327
- - !binary |-
328
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy5yYg==
329
- - !binary |-
330
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9hcnRpY2xlLnJi
331
- - !binary |-
332
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9ib29rLnJi
333
- - !binary |-
334
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9jYXIucmI=
335
- - !binary |-
336
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9jb21tZW50LnJi
337
- - !binary |-
338
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9jcm1fcGVyc29uLnJi
339
- - !binary |-
340
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9nZW5lcmljX29iamVjdC5yYg==
341
- - !binary |-
342
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy9tZXNzYWdlLnJi
343
- - !binary |-
344
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy90b3BpYy5yYg==
345
- - !binary |-
346
- c3BlYy9zdXBwb3J0L3Rlc3RfY2xhc3Nlcy91c2VyLnJi
171
+ - spec/integration/associations_spec.rb
172
+ - spec/integration/deletion_spec.rb
173
+ - spec/integration/enumerable_spec.rb
174
+ - spec/integration/indexing_spec.rb
175
+ - spec/integration/mongodb_spec.rb
176
+ - spec/integration/pagination_spec.rb
177
+ - spec/integration/persistence_spec.rb
178
+ - spec/integration/retrieval_spec.rb
179
+ - spec/integration/serialization_spec.rb
180
+ - spec/integration/update_spec.rb
181
+ - spec/integration/validations_spec.rb
182
+ - spec/perpetuity/attribute_set_spec.rb
183
+ - spec/perpetuity/attribute_spec.rb
184
+ - spec/perpetuity/config_spec.rb
185
+ - spec/perpetuity/data_injectable_spec.rb
186
+ - spec/perpetuity/dereferencer_spec.rb
187
+ - spec/perpetuity/identity_map_spec.rb
188
+ - spec/perpetuity/mapper_registry_spec.rb
189
+ - spec/perpetuity/mapper_spec.rb
190
+ - spec/perpetuity/mongodb/index_spec.rb
191
+ - spec/perpetuity/mongodb/query_attribute_spec.rb
192
+ - spec/perpetuity/mongodb/query_expression_spec.rb
193
+ - spec/perpetuity/mongodb/query_intersection_spec.rb
194
+ - spec/perpetuity/mongodb/query_spec.rb
195
+ - spec/perpetuity/mongodb/query_union_spec.rb
196
+ - spec/perpetuity/mongodb/serializer_spec.rb
197
+ - spec/perpetuity/reference_spec.rb
198
+ - spec/perpetuity/retrieval_spec.rb
199
+ - spec/perpetuity/validations/length_spec.rb
200
+ - spec/perpetuity/validations/presence_spec.rb
201
+ - spec/perpetuity/validations_spec.rb
202
+ - spec/perpetuity_spec.rb
203
+ - spec/spec_helper.rb
204
+ - spec/support/test_classes.rb
205
+ - spec/support/test_classes/article.rb
206
+ - spec/support/test_classes/book.rb
207
+ - spec/support/test_classes/car.rb
208
+ - spec/support/test_classes/comment.rb
209
+ - spec/support/test_classes/crm_person.rb
210
+ - spec/support/test_classes/generic_object.rb
211
+ - spec/support/test_classes/message.rb
212
+ - spec/support/test_classes/topic.rb
213
+ - spec/support/test_classes/user.rb