ripple 0.7.1 → 0.8.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/Rakefile +5 -4
  2. data/lib/rails/generators/ripple/model/model_generator.rb +20 -0
  3. data/lib/rails/generators/ripple/model/templates/model.rb +10 -0
  4. data/lib/rails/generators/ripple_generator.rb +60 -0
  5. data/lib/ripple.rb +24 -6
  6. data/lib/ripple/associations.rb +70 -3
  7. data/lib/ripple/associations/linked.rb +17 -5
  8. data/lib/ripple/associations/many.rb +5 -4
  9. data/lib/ripple/associations/many_embedded_proxy.rb +2 -0
  10. data/lib/ripple/associations/many_linked_proxy.rb +35 -0
  11. data/lib/ripple/associations/one.rb +4 -0
  12. data/lib/ripple/associations/one_embedded_proxy.rb +1 -1
  13. data/lib/ripple/associations/one_linked_proxy.rb +29 -0
  14. data/lib/ripple/attribute_methods/dirty.rb +2 -2
  15. data/lib/ripple/core_ext.rb +1 -0
  16. data/lib/ripple/core_ext/casting.rb +6 -8
  17. data/lib/ripple/document.rb +1 -0
  18. data/lib/ripple/document/bucket_access.rb +1 -1
  19. data/lib/ripple/document/finders.rb +1 -1
  20. data/lib/ripple/document/persistence.rb +28 -8
  21. data/lib/ripple/embedded_document.rb +1 -0
  22. data/lib/ripple/embedded_document/persistence.rb +11 -1
  23. data/lib/ripple/inspection.rb +26 -0
  24. data/lib/ripple/locale/en.yml +8 -5
  25. data/lib/ripple/railtie.rb +2 -12
  26. data/lib/ripple/validations.rb +5 -0
  27. data/lib/ripple/validations/associated_validator.rb +1 -2
  28. data/spec/fixtures/config.yml +6 -1
  29. data/spec/integration/ripple/associations_spec.rb +21 -0
  30. data/spec/ripple/associations/many_embedded_proxy_spec.rb +6 -0
  31. data/spec/ripple/associations/many_linked_proxy_spec.rb +103 -0
  32. data/spec/ripple/associations/one_embedded_proxy_spec.rb +5 -0
  33. data/spec/ripple/associations/one_linked_proxy_spec.rb +76 -0
  34. data/spec/ripple/associations/proxy_spec.rb +1 -1
  35. data/spec/ripple/bucket_access_spec.rb +3 -4
  36. data/spec/ripple/core_ext_spec.rb +11 -0
  37. data/spec/ripple/embedded_document/persistence_spec.rb +12 -0
  38. data/spec/ripple/finders_spec.rb +1 -1
  39. data/spec/ripple/inspection_spec.rb +48 -0
  40. data/spec/ripple/persistence_spec.rb +52 -6
  41. data/spec/ripple/properties_spec.rb +6 -0
  42. data/spec/ripple/ripple_spec.rb +12 -1
  43. data/spec/support/models/tasks.rb +13 -0
  44. data/spec/support/models/widget.rb +5 -1
  45. metadata +43 -18
@@ -87,6 +87,11 @@ describe Ripple::Associations::OneEmbeddedProxy do
87
87
  @gchild._root_document.should == @parent
88
88
  @gchild._parent_document.should == @child
89
89
  end
90
+
91
+ it "should refuse assigning a document of the wrong type" do
92
+ lambda { @parent.child = @gchild }.should raise_error
93
+ lambda { @child.gchild = [] }.should raise_error
94
+ end
90
95
 
91
96
  describe "callbacks" do
92
97
  before :each do
@@ -0,0 +1,76 @@
1
+ # Copyright 2010 Sean Cribbs, Sonian Inc., and Basho Technologies, Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ require File.expand_path("../../../spec_helper", __FILE__)
15
+
16
+ describe Ripple::Associations::OneLinkedProxy do
17
+ require 'support/models/tasks'
18
+
19
+ before :each do
20
+ @person = Person.new {|p| p.key = "riak-user" }
21
+ @profile = Profile.new {|t| t.key = "one" }
22
+ @other_profile = Profile.new {|t| t.key = "two" }
23
+ [@person, @profile, @other_profile].each do |doc|
24
+ doc.stub!(:new?).and_return(false)
25
+ end
26
+ end
27
+
28
+ it "should be blank before the associated document is set" do
29
+ @person.profile.should_not be_present
30
+ end
31
+
32
+ it "should accept a single document" do
33
+ lambda { @person.profile = @profile }.should_not raise_error
34
+ end
35
+
36
+ it "should set the link on the RObject when assigning" do
37
+ @person.profile = @profile
38
+ @person.robject.links.should include(@profile.robject.to_link("profile"))
39
+ end
40
+
41
+ it "should return the assigned document when assigning" do
42
+ ret = (@person.profile = @profile)
43
+ ret.should == @profile
44
+ end
45
+
46
+ it "should save the new document when assigning" do
47
+ @profile.should_receive(:new?).and_return(true)
48
+ @profile.should_receive(:save).and_return(true)
49
+ @person.profile = @profile
50
+ end
51
+
52
+ it "should link-walk to the associated document when accessing" do
53
+ @person.robject.links << @profile.robject.to_link("profile")
54
+ @person.robject.should_receive(:walk).with(Riak::WalkSpec.new(:bucket => "profiles", :tag => "profile")).and_return([[@profile.robject]])
55
+ @person.profile.should be_present
56
+ end
57
+
58
+ it "should return nil immediately if the association link is missing" do
59
+ @person.robject.links.should be_empty
60
+ @person.profile.should be_nil
61
+ end
62
+
63
+ it "should replace associated document with a new one" do
64
+ @person.profile = @profile
65
+ @person.profile = @other_profile
66
+ @person.profile.should == @other_profile
67
+ end
68
+
69
+ # it "should be able to build a new associated document" do
70
+ # @person.profile.build
71
+ # end
72
+
73
+ it "should refuse assigning a document of the wrong type" do
74
+ lambda { @person.profile = @person }.should raise_error
75
+ end
76
+ end
@@ -58,7 +58,7 @@ describe Ripple::Associations::Proxy do
58
58
  end
59
59
 
60
60
  it "should send resulting in a method missing if neither the proxy nor the target respond to the method" do
61
- lambda { @proxy.send(:gsub) }.should raise_error(NoMethodError)
61
+ lambda { @proxy.send(:explode) }.should raise_error(NoMethodError)
62
62
  end
63
63
  end
64
64
 
@@ -31,9 +31,8 @@ describe Ripple::Document::BucketAccess do
31
31
  end
32
32
 
33
33
  it "should allow access to the bucket" do
34
- bucket = Riak::Bucket.new(Ripple.client, "invoices")
35
- Ripple.client.should_receive(:[]).with("invoices", {:keys => false}).and_return(bucket)
36
- Invoice.bucket.should == bucket
34
+ Invoice.bucket.should be_kind_of(Riak::Bucket)
35
+ Invoice.bucket.client.should == Ripple.client
36
+ Invoice.bucket.name.should == "invoices"
37
37
  end
38
-
39
38
  end
@@ -21,3 +21,14 @@ describe DateTime do
21
21
  DateTime.civil(2010,3,16,12).as_json.should == "Tue, 16 Mar 2010 12:00:00 +0000"
22
22
  end
23
23
  end
24
+
25
+ describe "Boolean" do
26
+ it "should be available to properties on documents" do
27
+ lambda {
28
+ class BooleanTest
29
+ include Ripple::Document
30
+ property :foo, Boolean
31
+ end
32
+ }.should_not raise_error(NameError)
33
+ end
34
+ end
@@ -71,4 +71,16 @@ describe Ripple::EmbeddedDocument::Persistence do
71
71
  @root.addresses << @addr
72
72
  @root.attributes_for_persistence.should == {'_type' => 'User', 'addresses' => [{'_type' => 'Address', 'street' => nil}]}
73
73
  end
74
+
75
+ it "should modify its attributes and save" do
76
+ @addr.should_receive(:save).and_return(true)
77
+ @addr.update_attributes(:street => "4 Folsom Ave")
78
+ @addr.street.should == "4 Folsom Ave"
79
+ end
80
+
81
+ it "should update a single attribute and save without validations" do
82
+ @addr.should_receive(:save).with(:validate => false).and_return(true)
83
+ @addr.update_attribute(:street, "4 Folsom Ave")
84
+ @addr.street.should == "4 Folsom Ave"
85
+ end
74
86
  end
@@ -22,7 +22,7 @@ describe Ripple::Document::Finders do
22
22
  @client = Ripple.client
23
23
  @client.stub!(:http).and_return(@http)
24
24
  @bucket = Riak::Bucket.new(@client, "boxes")
25
- @client.stub!(:[]).and_return(@bucket)
25
+ Box.stub!(:bucket).and_return(@bucket)
26
26
  end
27
27
 
28
28
  it "should return an empty array if no keys are passed to find" do
@@ -0,0 +1,48 @@
1
+ # Copyright 2010 Sean Cribbs, Sonian Inc., and Basho Technologies, Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ require File.expand_path("../../spec_helper", __FILE__)
15
+
16
+ describe Ripple::Inspection do
17
+ require 'support/models/box'
18
+ require 'support/models/address'
19
+
20
+ before :each do
21
+ @box = Box.new
22
+ @address = Address.new
23
+ end
24
+
25
+ it "should include the class name in the inspect string" do
26
+ @box.inspect.should be_starts_with("<Box")
27
+ end
28
+
29
+ it "should include the key in the inspect string for documents" do
30
+ @box.key = "square"
31
+ @box.inspect.should be_starts_with("<Box:square")
32
+ end
33
+
34
+ it "should indicate a new document when no key is specified" do
35
+ @box.inspect.should be_starts_with("<Box:[new]")
36
+ end
37
+
38
+ it "should enumerate the document's properties and their values" do
39
+ @box.shape = "square"
40
+ @box.inspect.should include("shape=\"square\"")
41
+ @box.inspect.should include("created_at=")
42
+ @box.inspect.should include("updated_at=")
43
+ end
44
+
45
+ it "should not display a key for embedded documents" do
46
+ @address.inspect.should_not include("[new]")
47
+ end
48
+ end
@@ -33,7 +33,26 @@ describe Ripple::Document::Persistence do
33
33
  @widget.should_not be_a_new_record
34
34
  @widget.changes.should be_blank
35
35
  end
36
-
36
+
37
+ it "should modify attributes and save a new object" do
38
+ json = @widget.attributes.merge("_type" => "Widget", "size" => 5).to_json
39
+ @http.should_receive(:post).with(201, "/riak/", "widgets", an_instance_of(Hash), json, hash_including("Content-Type" => "application/json")).and_return(:code => 201, :headers => {'location' => ["/riak/widgets/new_widget"]})
40
+ @widget.update_attributes(:size => 5)
41
+ @widget.key.should == "new_widget"
42
+ @widget.should_not be_a_new_record
43
+ @widget.changes.should be_blank
44
+ end
45
+
46
+ it "should modify a single attribute and save a new object" do
47
+ json = @widget.attributes.merge("_type" => "Widget", "size" => 5).to_json
48
+ @http.should_receive(:post).with(201, "/riak/", "widgets", an_instance_of(Hash), json, hash_including("Content-Type" => "application/json")).and_return(:code => 201, :headers => {'location' => ["/riak/widgets/new_widget"]})
49
+ @widget.update_attribute(:size, 5)
50
+ @widget.key.should == "new_widget"
51
+ @widget.should_not be_a_new_record
52
+ @widget.changes.should be_blank
53
+ @widget.size.should == 5
54
+ end
55
+
37
56
  it "should instantiate and save a new object to riak" do
38
57
  json = @widget.attributes.merge(:size => 10, :_type => 'Widget').to_json
39
58
  @http.should_receive(:post).with(201, "/riak/", "widgets", an_instance_of(Hash), json, hash_including("Content-Type" => "application/json")).and_return(:code => 201, :headers => {'location' => ["/riak/widgets/new_widget"]})
@@ -41,7 +60,7 @@ describe Ripple::Document::Persistence do
41
60
  @widget.size.should == 10
42
61
  @widget.should_not be_a_new_record
43
62
  end
44
-
63
+
45
64
  it "should instantiate and save a new object to riak and allow its attributes to be set via a block" do
46
65
  json = @widget.attributes.merge(:size => 10, :_type => 'Widget').to_json
47
66
  @http.should_receive(:post).with(201, "/riak/", "widgets", an_instance_of(Hash), json, hash_including("Content-Type" => "application/json")).and_return(:code => 201, :headers => {'location' => ["/riak/widgets/new_widget"]})
@@ -82,15 +101,12 @@ describe Ripple::Document::Persistence do
82
101
  @widget.destroy.should be_true
83
102
  @widget.should be_frozen
84
103
  end
85
-
104
+
86
105
  it "should be a root document" do
87
106
  @widget._root_document.should == @widget
88
107
  end
89
108
 
90
109
  describe "when storing a class using single-bucket inheritance" do
91
-
92
- class Cog < Widget; property :name, String, :default => "cog"; end
93
-
94
110
  before :each do
95
111
  @cog = Cog.new(:size => 1000)
96
112
  end
@@ -103,4 +119,34 @@ describe Ripple::Document::Persistence do
103
119
  end
104
120
 
105
121
  end
122
+
123
+ describe "modifying the default quorum values" do
124
+ before :each do
125
+ Widget.set_quorums :r => 1, :w => 1, :dw => 0, :rw => 1
126
+ @bucket = mock("bucket", :name => "widgets")
127
+ @robject = mock("object", :data => {"name" => "bar"}, :key => "gear")
128
+ Widget.stub(:bucket).and_return(@bucket)
129
+ end
130
+
131
+ it "should use the supplied R value when reading" do
132
+ @bucket.should_receive(:get).with("gear", :r => 1).and_return(@robject)
133
+ Widget.find("gear")
134
+ end
135
+
136
+ it "should use the supplied W and DW values when storing" do
137
+ Widget.new do |widget|
138
+ widget.key = "gear"
139
+ widget.send(:robject).should_receive(:store).with({:w => 1, :dw => 0})
140
+ widget.save
141
+ end
142
+ end
143
+
144
+ it "should use the supplied RW when deleting" do
145
+ widget = Widget.new
146
+ widget.key = "gear"
147
+ widget.instance_variable_set(:@new, false)
148
+ widget.send(:robject).should_receive(:delete).with({:rw => 1})
149
+ widget.destroy
150
+ end
151
+ end
106
152
  end
@@ -115,12 +115,18 @@ describe Ripple::Property do
115
115
  @prop.type_cast("s").should == "s"
116
116
  @prop.type_cast(1).should == "1"
117
117
  @prop.type_cast(true).should == "true"
118
+ @prop.type_cast(false).should == "false"
118
119
  if RUBY_VERSION < "1.9"
119
120
  @prop.type_cast([]).should == ""
120
121
  else
121
122
  @prop.type_cast([]).should == "[]"
122
123
  end
123
124
  end
125
+
126
+ it "should not cast nil" do
127
+ @prop.type_cast(nil).should be_nil
128
+ end
129
+
124
130
  end
125
131
 
126
132
  describe "when type is an Integer type" do
@@ -43,7 +43,18 @@ describe Ripple do
43
43
  end
44
44
 
45
45
  it "should raise No Such File or Directory when given a bad configuration file" do
46
- lambda { Ripple.load_config('not-here') }.should raise_error(Errno::ENOENT)
46
+ lambda { Ripple.load_config('not-here') }.should raise_error(Ripple::MissingConfiguration)
47
+ end
48
+
49
+ it "should pass an empty hash into configure if the configuration file is missing the key" do
50
+ Ripple.should_receive(:config=).with({})
51
+ Ripple.load_config(File.join(File.dirname(__FILE__), '..', 'fixtures', 'config.yml'), [:ripple, 'not-here'])
52
+ end
53
+
54
+ it "should select the configuration hash from the config keys provided" do
55
+ Ripple.load_config(File.join(File.dirname(__FILE__), '..', 'fixtures', 'config.yml'), ['ripple_rails', 'development'])
56
+ Ripple.client.port.should == 9001
57
+ Ripple.client.host.should == '127.0.0.1'
47
58
  end
48
59
 
49
60
  it "should apply the configuration under the ripple key" do
@@ -0,0 +1,13 @@
1
+ class Person
2
+ include Ripple::Document
3
+ many :tasks
4
+ one :profile
5
+ end
6
+
7
+ class Task
8
+ include Ripple::Document
9
+ end
10
+
11
+ class Profile
12
+ include Ripple::Document
13
+ end
@@ -3,4 +3,8 @@ class Widget
3
3
  include Ripple::Document
4
4
  property :size, Integer
5
5
  property :name, String, :default => "widget"
6
- end
6
+ end
7
+
8
+ class Cog < Widget
9
+ property :name, String, :default => "cog"
10
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ripple
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ prerelease: true
5
5
  segments:
6
6
  - 0
7
- - 7
8
- - 1
9
- version: 0.7.1
7
+ - 8
8
+ - 0
9
+ - beta
10
+ version: 0.8.0.beta
10
11
  platform: ruby
11
12
  authors:
12
13
  - Sean Cribbs
@@ -14,13 +15,14 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-06-08 00:00:00 -04:00
18
+ date: 2010-08-24 00:00:00 -04:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: rspec
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ~>
26
28
  - !ruby/object:Gem::Version
@@ -29,28 +31,31 @@ dependencies:
29
31
  - 0
30
32
  - 0
31
33
  - beta
32
- - 6
33
- version: 2.0.0.beta.6
34
+ - 18
35
+ version: 2.0.0.beta.18
34
36
  type: :development
35
37
  version_requirements: *id001
36
38
  - !ruby/object:Gem::Dependency
37
39
  name: riak-client
38
40
  prerelease: false
39
41
  requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
40
43
  requirements:
41
44
  - - "="
42
45
  - !ruby/object:Gem::Version
43
46
  segments:
44
47
  - 0
45
- - 7
46
- - 1
47
- version: 0.7.1
48
+ - 8
49
+ - 0
50
+ - beta
51
+ version: 0.8.0.beta
48
52
  type: :runtime
49
53
  version_requirements: *id002
50
54
  - !ruby/object:Gem::Dependency
51
55
  name: activesupport
52
56
  prerelease: false
53
57
  requirement: &id003 !ruby/object:Gem::Requirement
58
+ none: false
54
59
  requirements:
55
60
  - - "="
56
61
  - !ruby/object:Gem::Version
@@ -58,14 +63,15 @@ dependencies:
58
63
  - 3
59
64
  - 0
60
65
  - 0
61
- - beta3
62
- version: 3.0.0.beta3
66
+ - rc2
67
+ version: 3.0.0.rc2
63
68
  type: :runtime
64
69
  version_requirements: *id003
65
70
  - !ruby/object:Gem::Dependency
66
71
  name: activemodel
67
72
  prerelease: false
68
73
  requirement: &id004 !ruby/object:Gem::Requirement
74
+ none: false
69
75
  requirements:
70
76
  - - "="
71
77
  - !ruby/object:Gem::Version
@@ -73,8 +79,8 @@ dependencies:
73
79
  - 3
74
80
  - 0
75
81
  - 0
76
- - beta3
77
- version: 3.0.0.beta3
82
+ - rc2
83
+ version: 3.0.0.rc2
78
84
  type: :runtime
79
85
  version_requirements: *id004
80
86
  description: ripple is an object-mapper library for Riak, the distributed database by Basho. It uses ActiveModel to provide an experience that integrates well with Rails 3 applications.
@@ -86,13 +92,18 @@ extensions: []
86
92
  extra_rdoc_files: []
87
93
 
88
94
  files:
95
+ - lib/rails/generators/ripple/model/model_generator.rb
96
+ - lib/rails/generators/ripple/model/templates/model.rb
97
+ - lib/rails/generators/ripple_generator.rb
89
98
  - lib/ripple/associations/embedded.rb
90
99
  - lib/ripple/associations/instantiators.rb
91
100
  - lib/ripple/associations/linked.rb
92
101
  - lib/ripple/associations/many.rb
93
102
  - lib/ripple/associations/many_embedded_proxy.rb
103
+ - lib/ripple/associations/many_linked_proxy.rb
94
104
  - lib/ripple/associations/one.rb
95
105
  - lib/ripple/associations/one_embedded_proxy.rb
106
+ - lib/ripple/associations/one_linked_proxy.rb
96
107
  - lib/ripple/associations/proxy.rb
97
108
  - lib/ripple/associations.rb
98
109
  - lib/ripple/attribute_methods/dirty.rb
@@ -103,6 +114,7 @@ files:
103
114
  - lib/ripple/callbacks.rb
104
115
  - lib/ripple/conversion.rb
105
116
  - lib/ripple/core_ext/casting.rb
117
+ - lib/ripple/core_ext.rb
106
118
  - lib/ripple/document/bucket_access.rb
107
119
  - lib/ripple/document/finders.rb
108
120
  - lib/ripple/document/persistence.rb
@@ -111,6 +123,7 @@ files:
111
123
  - lib/ripple/embedded_document/persistence.rb
112
124
  - lib/ripple/embedded_document.rb
113
125
  - lib/ripple/i18n.rb
126
+ - lib/ripple/inspection.rb
114
127
  - lib/ripple/locale/en.yml
115
128
  - lib/ripple/properties.rb
116
129
  - lib/ripple/property_type_mismatch.rb
@@ -125,7 +138,9 @@ files:
125
138
  - spec/integration/ripple/associations_spec.rb
126
139
  - spec/integration/ripple/persistence_spec.rb
127
140
  - spec/ripple/associations/many_embedded_proxy_spec.rb
141
+ - spec/ripple/associations/many_linked_proxy_spec.rb
128
142
  - spec/ripple/associations/one_embedded_proxy_spec.rb
143
+ - spec/ripple/associations/one_linked_proxy_spec.rb
129
144
  - spec/ripple/associations/proxy_spec.rb
130
145
  - spec/ripple/associations_spec.rb
131
146
  - spec/ripple/attribute_methods_spec.rb
@@ -138,6 +153,7 @@ files:
138
153
  - spec/ripple/embedded_document/persistence_spec.rb
139
154
  - spec/ripple/embedded_document_spec.rb
140
155
  - spec/ripple/finders_spec.rb
156
+ - spec/ripple/inspection_spec.rb
141
157
  - spec/ripple/persistence_spec.rb
142
158
  - spec/ripple/properties_spec.rb
143
159
  - spec/ripple/ripple_spec.rb
@@ -159,6 +175,7 @@ files:
159
175
  - spec/support/models/note.rb
160
176
  - spec/support/models/page.rb
161
177
  - spec/support/models/paid_invoice.rb
178
+ - spec/support/models/tasks.rb
162
179
  - spec/support/models/tree.rb
163
180
  - spec/support/models/user.rb
164
181
  - spec/support/models/widget.rb
@@ -172,6 +189,7 @@ rdoc_options: []
172
189
  require_paths:
173
190
  - lib
174
191
  required_ruby_version: !ruby/object:Gem::Requirement
192
+ none: false
175
193
  requirements:
176
194
  - - ">="
177
195
  - !ruby/object:Gem::Version
@@ -179,16 +197,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
197
  - 0
180
198
  version: "0"
181
199
  required_rubygems_version: !ruby/object:Gem::Requirement
200
+ none: false
182
201
  requirements:
183
- - - ">="
202
+ - - ">"
184
203
  - !ruby/object:Gem::Version
185
204
  segments:
186
- - 0
187
- version: "0"
205
+ - 1
206
+ - 3
207
+ - 1
208
+ version: 1.3.1
188
209
  requirements: []
189
210
 
190
211
  rubyforge_project:
191
- rubygems_version: 1.3.6
212
+ rubygems_version: 1.3.7
192
213
  signing_key:
193
214
  specification_version: 3
194
215
  summary: ripple is an object-mapper library for Riak, the distributed database by Basho.
@@ -196,7 +217,9 @@ test_files:
196
217
  - spec/integration/ripple/associations_spec.rb
197
218
  - spec/integration/ripple/persistence_spec.rb
198
219
  - spec/ripple/associations/many_embedded_proxy_spec.rb
220
+ - spec/ripple/associations/many_linked_proxy_spec.rb
199
221
  - spec/ripple/associations/one_embedded_proxy_spec.rb
222
+ - spec/ripple/associations/one_linked_proxy_spec.rb
200
223
  - spec/ripple/associations/proxy_spec.rb
201
224
  - spec/ripple/associations_spec.rb
202
225
  - spec/ripple/attribute_methods_spec.rb
@@ -209,6 +232,7 @@ test_files:
209
232
  - spec/ripple/embedded_document/persistence_spec.rb
210
233
  - spec/ripple/embedded_document_spec.rb
211
234
  - spec/ripple/finders_spec.rb
235
+ - spec/ripple/inspection_spec.rb
212
236
  - spec/ripple/persistence_spec.rb
213
237
  - spec/ripple/properties_spec.rb
214
238
  - spec/ripple/ripple_spec.rb
@@ -230,6 +254,7 @@ test_files:
230
254
  - spec/support/models/note.rb
231
255
  - spec/support/models/page.rb
232
256
  - spec/support/models/paid_invoice.rb
257
+ - spec/support/models/tasks.rb
233
258
  - spec/support/models/tree.rb
234
259
  - spec/support/models/user.rb
235
260
  - spec/support/models/widget.rb