ripple 0.9.3 → 0.9.5
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.
@@ -22,8 +22,9 @@ module Ripple
|
|
22
22
|
include ActiveModel::Dirty
|
23
23
|
|
24
24
|
# @private
|
25
|
-
def
|
25
|
+
def really_save(*args)
|
26
26
|
if result = super
|
27
|
+
@previously_changed = changes
|
27
28
|
changed_attributes.clear
|
28
29
|
end
|
29
30
|
result
|
@@ -44,7 +45,9 @@ module Ripple
|
|
44
45
|
|
45
46
|
private
|
46
47
|
def attribute=(attr_name, value)
|
47
|
-
|
48
|
+
if self.class.properties.include?(attr_name.intern) && @attributes[attr_name] != value
|
49
|
+
attribute_will_change!(attr_name)
|
50
|
+
end
|
48
51
|
super
|
49
52
|
end
|
50
53
|
end
|
@@ -92,11 +92,13 @@ module Ripple
|
|
92
92
|
# Find all documents in the Document's bucket and return them.
|
93
93
|
# @overload all()
|
94
94
|
# Get all documents and return them in an array.
|
95
|
+
# @param [Hash] options options to be passed to the
|
96
|
+
# underlying {Bucket#keys} method.
|
95
97
|
# @return [Array<Document>] all found documents in the bucket
|
96
98
|
# @overload all() {|doc| ... }
|
97
99
|
# Stream all documents in the bucket through the block.
|
98
100
|
# @yield [Document] doc a found document
|
99
|
-
def all
|
101
|
+
def all(options={})
|
100
102
|
if block_given?
|
101
103
|
bucket.keys do |keys|
|
102
104
|
keys.each do |key|
|
@@ -106,7 +108,7 @@ module Ripple
|
|
106
108
|
end
|
107
109
|
[]
|
108
110
|
else
|
109
|
-
bucket.keys.inject([]) do |acc, k|
|
111
|
+
bucket.keys(options).inject([]) do |acc, k|
|
110
112
|
obj = find_one(k)
|
111
113
|
obj ? acc << obj : acc
|
112
114
|
end
|
data/ripple.gemspec
CHANGED
@@ -2,37 +2,37 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{ripple}
|
5
|
-
s.version = "0.9.
|
5
|
+
s.version = "0.9.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = [
|
9
|
-
s.date = %q{2011-
|
8
|
+
s.authors = [%q{Sean Cribbs}]
|
9
|
+
s.date = %q{2011-06-14}
|
10
10
|
s.description = %q{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.}
|
11
11
|
s.email = %q{sean@basho.com}
|
12
|
-
s.files = [
|
12
|
+
s.files = [%q{Gemfile}, %q{lib/rails/generators/ripple/configuration/configuration_generator.rb}, %q{lib/rails/generators/ripple/configuration/templates/ripple.yml}, %q{lib/rails/generators/ripple/js/js_generator.rb}, %q{lib/rails/generators/ripple/js/templates/js/contrib.js}, %q{lib/rails/generators/ripple/js/templates/js/iso8601.js}, %q{lib/rails/generators/ripple/js/templates/js/ripple.js}, %q{lib/rails/generators/ripple/model/model_generator.rb}, %q{lib/rails/generators/ripple/model/templates/model.rb}, %q{lib/rails/generators/ripple/observer/observer_generator.rb}, %q{lib/rails/generators/ripple/observer/templates/observer.rb}, %q{lib/rails/generators/ripple/test/templates/test_server.rb}, %q{lib/rails/generators/ripple/test/test_generator.rb}, %q{lib/rails/generators/ripple_generator.rb}, %q{lib/ripple/associations/embedded.rb}, %q{lib/ripple/associations/instantiators.rb}, %q{lib/ripple/associations/linked.rb}, %q{lib/ripple/associations/many.rb}, %q{lib/ripple/associations/many_embedded_proxy.rb}, %q{lib/ripple/associations/many_linked_proxy.rb}, %q{lib/ripple/associations/one.rb}, %q{lib/ripple/associations/one_embedded_proxy.rb}, %q{lib/ripple/associations/one_linked_proxy.rb}, %q{lib/ripple/associations/proxy.rb}, %q{lib/ripple/associations.rb}, %q{lib/ripple/attribute_methods/dirty.rb}, %q{lib/ripple/attribute_methods/query.rb}, %q{lib/ripple/attribute_methods/read.rb}, %q{lib/ripple/attribute_methods/write.rb}, %q{lib/ripple/attribute_methods.rb}, %q{lib/ripple/callbacks.rb}, %q{lib/ripple/conversion.rb}, %q{lib/ripple/core_ext/casting.rb}, %q{lib/ripple/core_ext.rb}, %q{lib/ripple/document/bucket_access.rb}, %q{lib/ripple/document/finders.rb}, %q{lib/ripple/document/key.rb}, %q{lib/ripple/document/persistence.rb}, %q{lib/ripple/document.rb}, %q{lib/ripple/embedded_document/finders.rb}, %q{lib/ripple/embedded_document/persistence.rb}, %q{lib/ripple/embedded_document.rb}, %q{lib/ripple/i18n.rb}, %q{lib/ripple/inspection.rb}, %q{lib/ripple/locale/en.yml}, %q{lib/ripple/nested_attributes.rb}, %q{lib/ripple/observable.rb}, %q{lib/ripple/properties.rb}, %q{lib/ripple/property_type_mismatch.rb}, %q{lib/ripple/railtie.rb}, %q{lib/ripple/serialization.rb}, %q{lib/ripple/timestamps.rb}, %q{lib/ripple/translation.rb}, %q{lib/ripple/validations/associated_validator.rb}, %q{lib/ripple/validations.rb}, %q{lib/ripple.rb}, %q{Rakefile}, %q{ripple.gemspec}, %q{spec/fixtures/config.yml}, %q{spec/integration/ripple/associations_spec.rb}, %q{spec/integration/ripple/nested_attributes_spec.rb}, %q{spec/integration/ripple/persistence_spec.rb}, %q{spec/ripple/associations/many_embedded_proxy_spec.rb}, %q{spec/ripple/associations/many_linked_proxy_spec.rb}, %q{spec/ripple/associations/one_embedded_proxy_spec.rb}, %q{spec/ripple/associations/one_linked_proxy_spec.rb}, %q{spec/ripple/associations/proxy_spec.rb}, %q{spec/ripple/associations_spec.rb}, %q{spec/ripple/attribute_methods/dirty_spec.rb}, %q{spec/ripple/attribute_methods_spec.rb}, %q{spec/ripple/bucket_access_spec.rb}, %q{spec/ripple/callbacks_spec.rb}, %q{spec/ripple/conversion_spec.rb}, %q{spec/ripple/core_ext_spec.rb}, %q{spec/ripple/document_spec.rb}, %q{spec/ripple/embedded_document/finders_spec.rb}, %q{spec/ripple/embedded_document/persistence_spec.rb}, %q{spec/ripple/embedded_document_spec.rb}, %q{spec/ripple/finders_spec.rb}, %q{spec/ripple/inspection_spec.rb}, %q{spec/ripple/key_spec.rb}, %q{spec/ripple/observable_spec.rb}, %q{spec/ripple/persistence_spec.rb}, %q{spec/ripple/properties_spec.rb}, %q{spec/ripple/ripple_spec.rb}, %q{spec/ripple/serialization_spec.rb}, %q{spec/ripple/timestamps_spec.rb}, %q{spec/ripple/validations/associated_validator_spec.rb}, %q{spec/ripple/validations_spec.rb}, %q{spec/spec_helper.rb}, %q{spec/support/associations/proxies.rb}, %q{spec/support/associations.rb}, %q{spec/support/mocks.rb}, %q{spec/support/models/address.rb}, %q{spec/support/models/box.rb}, %q{spec/support/models/car.rb}, %q{spec/support/models/cardboard_box.rb}, %q{spec/support/models/clock.rb}, %q{spec/support/models/clock_observer.rb}, %q{spec/support/models/company.rb}, %q{spec/support/models/customer.rb}, %q{spec/support/models/driver.rb}, %q{spec/support/models/email.rb}, %q{spec/support/models/engine.rb}, %q{spec/support/models/family.rb}, %q{spec/support/models/favorite.rb}, %q{spec/support/models/invoice.rb}, %q{spec/support/models/late_invoice.rb}, %q{spec/support/models/note.rb}, %q{spec/support/models/page.rb}, %q{spec/support/models/paid_invoice.rb}, %q{spec/support/models/passenger.rb}, %q{spec/support/models/seat.rb}, %q{spec/support/models/tasks.rb}, %q{spec/support/models/tree.rb}, %q{spec/support/models/user.rb}, %q{spec/support/models/wheel.rb}, %q{spec/support/models/widget.rb}, %q{spec/support/models.rb}, %q{spec/support/test_server.rb}, %q{spec/support/test_server.yml.example}]
|
13
13
|
s.homepage = %q{http://seancribbs.github.com/ripple}
|
14
|
-
s.require_paths = [
|
15
|
-
s.rubygems_version = %q{1.
|
14
|
+
s.require_paths = [%q{lib}]
|
15
|
+
s.rubygems_version = %q{1.8.5}
|
16
16
|
s.summary = %q{ripple is an object-mapper library for Riak, the distributed database by Basho.}
|
17
|
-
s.test_files = [
|
17
|
+
s.test_files = [%q{spec/integration/ripple/associations_spec.rb}, %q{spec/integration/ripple/nested_attributes_spec.rb}, %q{spec/integration/ripple/persistence_spec.rb}, %q{spec/ripple/associations/many_embedded_proxy_spec.rb}, %q{spec/ripple/associations/many_linked_proxy_spec.rb}, %q{spec/ripple/associations/one_embedded_proxy_spec.rb}, %q{spec/ripple/associations/one_linked_proxy_spec.rb}, %q{spec/ripple/associations/proxy_spec.rb}, %q{spec/ripple/associations_spec.rb}, %q{spec/ripple/attribute_methods/dirty_spec.rb}, %q{spec/ripple/attribute_methods_spec.rb}, %q{spec/ripple/bucket_access_spec.rb}, %q{spec/ripple/callbacks_spec.rb}, %q{spec/ripple/conversion_spec.rb}, %q{spec/ripple/core_ext_spec.rb}, %q{spec/ripple/document_spec.rb}, %q{spec/ripple/embedded_document/finders_spec.rb}, %q{spec/ripple/embedded_document/persistence_spec.rb}, %q{spec/ripple/embedded_document_spec.rb}, %q{spec/ripple/finders_spec.rb}, %q{spec/ripple/inspection_spec.rb}, %q{spec/ripple/key_spec.rb}, %q{spec/ripple/observable_spec.rb}, %q{spec/ripple/persistence_spec.rb}, %q{spec/ripple/properties_spec.rb}, %q{spec/ripple/ripple_spec.rb}, %q{spec/ripple/serialization_spec.rb}, %q{spec/ripple/timestamps_spec.rb}, %q{spec/ripple/validations/associated_validator_spec.rb}, %q{spec/ripple/validations_spec.rb}]
|
18
18
|
|
19
19
|
if s.respond_to? :specification_version then
|
20
20
|
s.specification_version = 3
|
21
21
|
|
22
22
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
23
23
|
s.add_development_dependency(%q<rspec>, ["~> 2.4.0"])
|
24
|
-
s.add_runtime_dependency(%q<riak-client>, ["~> 0.9.
|
24
|
+
s.add_runtime_dependency(%q<riak-client>, ["~> 0.9.5"])
|
25
25
|
s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0"])
|
26
26
|
s.add_runtime_dependency(%q<activemodel>, ["~> 3.0.0"])
|
27
27
|
else
|
28
28
|
s.add_dependency(%q<rspec>, ["~> 2.4.0"])
|
29
|
-
s.add_dependency(%q<riak-client>, ["~> 0.9.
|
29
|
+
s.add_dependency(%q<riak-client>, ["~> 0.9.5"])
|
30
30
|
s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
|
31
31
|
s.add_dependency(%q<activemodel>, ["~> 3.0.0"])
|
32
32
|
end
|
33
33
|
else
|
34
34
|
s.add_dependency(%q<rspec>, ["~> 2.4.0"])
|
35
|
-
s.add_dependency(%q<riak-client>, ["~> 0.9.
|
35
|
+
s.add_dependency(%q<riak-client>, ["~> 0.9.5"])
|
36
36
|
s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
|
37
37
|
s.add_dependency(%q<activemodel>, ["~> 3.0.0"])
|
38
38
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path("../../../spec_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Ripple::AttributeMethods::Dirty do
|
4
|
+
let(:company) { Company.new }
|
5
|
+
let(:ceo) { CEO.new(:name => 'John Doe') }
|
6
|
+
let(:department) { Department.new(:name => 'Marketing') }
|
7
|
+
let(:manager) { Manager.new(:name => 'Billy Willy') }
|
8
|
+
let(:invoice) { Invoice.new }
|
9
|
+
|
10
|
+
describe "previous_changes" do
|
11
|
+
before do
|
12
|
+
company.robject.stub!(:store).and_return(true)
|
13
|
+
company.name = 'Fizz Buzz, Inc.'
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should capture previous changes when saving" do
|
17
|
+
company.save
|
18
|
+
company.previous_changes.should include('name')
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should make previous changes available to after callbacks" do
|
22
|
+
class << company
|
23
|
+
after_save {|c| c['pc'] = previous_changes }
|
24
|
+
end
|
25
|
+
company.save
|
26
|
+
company['pc'].should include('name')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/spec/ripple/finders_spec.rb
CHANGED
@@ -172,6 +172,11 @@ describe Ripple::Document::Finders do
|
|
172
172
|
["square", "rectangle"].should include(box.shape)
|
173
173
|
end.should == []
|
174
174
|
end
|
175
|
+
|
176
|
+
it "should pass any given options to the underlying Bucket#keys method" do
|
177
|
+
@bucket.should_receive(:keys).with(:reload => true).and_return([])
|
178
|
+
Box.all(:reload => true).should == []
|
179
|
+
end
|
175
180
|
end
|
176
181
|
|
177
182
|
describe "single-bucket inheritance" do
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Company
|
2
|
+
include Ripple::Document
|
3
|
+
property :name, String
|
4
|
+
many :departments
|
5
|
+
many :invoices # linked
|
6
|
+
one :ceo, :class_name => 'CEO'
|
7
|
+
end
|
8
|
+
|
9
|
+
class Department
|
10
|
+
include Ripple::EmbeddedDocument
|
11
|
+
property :name, String
|
12
|
+
many :managers
|
13
|
+
end
|
14
|
+
|
15
|
+
class Manager
|
16
|
+
include Ripple::EmbeddedDocument
|
17
|
+
property :name, String
|
18
|
+
end
|
19
|
+
|
20
|
+
class CEO
|
21
|
+
include Ripple::EmbeddedDocument
|
22
|
+
property :name, String
|
23
|
+
end
|
metadata
CHANGED
@@ -1,70 +1,68 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ripple
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.5
|
4
5
|
prerelease:
|
5
|
-
version: 0.9.3
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Sean Cribbs
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-06-15 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: rspec
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2151926080 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
18
|
+
requirements:
|
21
19
|
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 2.4.0
|
24
22
|
type: :development
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: riak-client
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *2151926080
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: riak-client
|
27
|
+
requirement: &2151923600 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
29
|
+
requirements:
|
32
30
|
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 0.9.
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.9.5
|
35
33
|
type: :runtime
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: activesupport
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *2151923600
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: activesupport
|
38
|
+
requirement: &2151922060 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
40
|
+
requirements:
|
43
41
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
42
|
+
- !ruby/object:Gem::Version
|
45
43
|
version: 3.0.0
|
46
44
|
type: :runtime
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: activemodel
|
50
45
|
prerelease: false
|
51
|
-
|
46
|
+
version_requirements: *2151922060
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: activemodel
|
49
|
+
requirement: &2151920540 !ruby/object:Gem::Requirement
|
52
50
|
none: false
|
53
|
-
requirements:
|
51
|
+
requirements:
|
54
52
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
53
|
+
- !ruby/object:Gem::Version
|
56
54
|
version: 3.0.0
|
57
55
|
type: :runtime
|
58
|
-
|
59
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2151920540
|
58
|
+
description: ripple is an object-mapper library for Riak, the distributed database
|
59
|
+
by Basho. It uses ActiveModel to provide an experience that integrates well with
|
60
|
+
Rails 3 applications.
|
60
61
|
email: sean@basho.com
|
61
62
|
executables: []
|
62
|
-
|
63
63
|
extensions: []
|
64
|
-
|
65
64
|
extra_rdoc_files: []
|
66
|
-
|
67
|
-
files:
|
65
|
+
files:
|
68
66
|
- Gemfile
|
69
67
|
- lib/rails/generators/ripple/configuration/configuration_generator.rb
|
70
68
|
- lib/rails/generators/ripple/configuration/templates/ripple.yml
|
@@ -133,6 +131,7 @@ files:
|
|
133
131
|
- spec/ripple/associations/one_linked_proxy_spec.rb
|
134
132
|
- spec/ripple/associations/proxy_spec.rb
|
135
133
|
- spec/ripple/associations_spec.rb
|
134
|
+
- spec/ripple/attribute_methods/dirty_spec.rb
|
136
135
|
- spec/ripple/attribute_methods_spec.rb
|
137
136
|
- spec/ripple/bucket_access_spec.rb
|
138
137
|
- spec/ripple/callbacks_spec.rb
|
@@ -163,6 +162,7 @@ files:
|
|
163
162
|
- spec/support/models/cardboard_box.rb
|
164
163
|
- spec/support/models/clock.rb
|
165
164
|
- spec/support/models/clock_observer.rb
|
165
|
+
- spec/support/models/company.rb
|
166
166
|
- spec/support/models/customer.rb
|
167
167
|
- spec/support/models/driver.rb
|
168
168
|
- spec/support/models/email.rb
|
@@ -186,32 +186,30 @@ files:
|
|
186
186
|
- spec/support/test_server.yml.example
|
187
187
|
homepage: http://seancribbs.github.com/ripple
|
188
188
|
licenses: []
|
189
|
-
|
190
189
|
post_install_message:
|
191
190
|
rdoc_options: []
|
192
|
-
|
193
|
-
require_paths:
|
191
|
+
require_paths:
|
194
192
|
- lib
|
195
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
193
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
196
194
|
none: false
|
197
|
-
requirements:
|
198
|
-
- -
|
199
|
-
- !ruby/object:Gem::Version
|
200
|
-
version:
|
201
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ! '>='
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
200
|
none: false
|
203
|
-
requirements:
|
204
|
-
- -
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version:
|
201
|
+
requirements:
|
202
|
+
- - ! '>='
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
207
205
|
requirements: []
|
208
|
-
|
209
206
|
rubyforge_project:
|
210
|
-
rubygems_version: 1.
|
207
|
+
rubygems_version: 1.8.5
|
211
208
|
signing_key:
|
212
209
|
specification_version: 3
|
213
|
-
summary: ripple is an object-mapper library for Riak, the distributed database by
|
214
|
-
|
210
|
+
summary: ripple is an object-mapper library for Riak, the distributed database by
|
211
|
+
Basho.
|
212
|
+
test_files:
|
215
213
|
- spec/integration/ripple/associations_spec.rb
|
216
214
|
- spec/integration/ripple/nested_attributes_spec.rb
|
217
215
|
- spec/integration/ripple/persistence_spec.rb
|
@@ -221,6 +219,7 @@ test_files:
|
|
221
219
|
- spec/ripple/associations/one_linked_proxy_spec.rb
|
222
220
|
- spec/ripple/associations/proxy_spec.rb
|
223
221
|
- spec/ripple/associations_spec.rb
|
222
|
+
- spec/ripple/attribute_methods/dirty_spec.rb
|
224
223
|
- spec/ripple/attribute_methods_spec.rb
|
225
224
|
- spec/ripple/bucket_access_spec.rb
|
226
225
|
- spec/ripple/callbacks_spec.rb
|