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.
- data/Rakefile +5 -4
- data/lib/rails/generators/ripple/model/model_generator.rb +20 -0
- data/lib/rails/generators/ripple/model/templates/model.rb +10 -0
- data/lib/rails/generators/ripple_generator.rb +60 -0
- data/lib/ripple.rb +24 -6
- data/lib/ripple/associations.rb +70 -3
- data/lib/ripple/associations/linked.rb +17 -5
- data/lib/ripple/associations/many.rb +5 -4
- data/lib/ripple/associations/many_embedded_proxy.rb +2 -0
- data/lib/ripple/associations/many_linked_proxy.rb +35 -0
- data/lib/ripple/associations/one.rb +4 -0
- data/lib/ripple/associations/one_embedded_proxy.rb +1 -1
- data/lib/ripple/associations/one_linked_proxy.rb +29 -0
- data/lib/ripple/attribute_methods/dirty.rb +2 -2
- data/lib/ripple/core_ext.rb +1 -0
- data/lib/ripple/core_ext/casting.rb +6 -8
- data/lib/ripple/document.rb +1 -0
- data/lib/ripple/document/bucket_access.rb +1 -1
- data/lib/ripple/document/finders.rb +1 -1
- data/lib/ripple/document/persistence.rb +28 -8
- data/lib/ripple/embedded_document.rb +1 -0
- data/lib/ripple/embedded_document/persistence.rb +11 -1
- data/lib/ripple/inspection.rb +26 -0
- data/lib/ripple/locale/en.yml +8 -5
- data/lib/ripple/railtie.rb +2 -12
- data/lib/ripple/validations.rb +5 -0
- data/lib/ripple/validations/associated_validator.rb +1 -2
- data/spec/fixtures/config.yml +6 -1
- data/spec/integration/ripple/associations_spec.rb +21 -0
- data/spec/ripple/associations/many_embedded_proxy_spec.rb +6 -0
- data/spec/ripple/associations/many_linked_proxy_spec.rb +103 -0
- data/spec/ripple/associations/one_embedded_proxy_spec.rb +5 -0
- data/spec/ripple/associations/one_linked_proxy_spec.rb +76 -0
- data/spec/ripple/associations/proxy_spec.rb +1 -1
- data/spec/ripple/bucket_access_spec.rb +3 -4
- data/spec/ripple/core_ext_spec.rb +11 -0
- data/spec/ripple/embedded_document/persistence_spec.rb +12 -0
- data/spec/ripple/finders_spec.rb +1 -1
- data/spec/ripple/inspection_spec.rb +48 -0
- data/spec/ripple/persistence_spec.rb +52 -6
- data/spec/ripple/properties_spec.rb +6 -0
- data/spec/ripple/ripple_spec.rb +12 -1
- data/spec/support/models/tasks.rb +13 -0
- data/spec/support/models/widget.rb +5 -1
- 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(:
|
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
|
35
|
-
|
36
|
-
Invoice.bucket.should ==
|
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
|
data/spec/ripple/finders_spec.rb
CHANGED
@@ -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
|
-
|
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
|
data/spec/ripple/ripple_spec.rb
CHANGED
@@ -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(
|
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
|
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:
|
4
|
+
prerelease: true
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
|
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-
|
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
|
-
-
|
33
|
-
version: 2.0.0.beta.
|
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
|
-
-
|
46
|
-
-
|
47
|
-
|
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
|
-
-
|
62
|
-
version: 3.0.0.
|
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
|
-
-
|
77
|
-
version: 3.0.0.
|
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
|
-
-
|
187
|
-
|
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.
|
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
|