ripple 0.9.5 → 1.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. data/.gitignore +32 -0
  2. data/Gemfile +10 -9
  3. data/Guardfile +15 -0
  4. data/Rakefile +11 -40
  5. data/lib/rails/generators/ripple/configuration/configuration_generator.rb +0 -13
  6. data/lib/rails/generators/ripple/configuration/templates/ripple.yml +4 -4
  7. data/lib/rails/generators/ripple/js/js_generator.rb +0 -13
  8. data/lib/rails/generators/ripple/js/templates/js/contrib.js +0 -17
  9. data/lib/rails/generators/ripple/js/templates/js/ripple.js +0 -13
  10. data/lib/rails/generators/ripple/model/model_generator.rb +0 -14
  11. data/lib/rails/generators/ripple/model/templates/model.rb +1 -1
  12. data/lib/rails/generators/ripple/observer/observer_generator.rb +0 -14
  13. data/lib/rails/generators/ripple/test/test_generator.rb +7 -19
  14. data/lib/rails/generators/ripple_generator.rb +1 -14
  15. data/lib/ripple.rb +7 -14
  16. data/lib/ripple/associations.rb +129 -26
  17. data/lib/ripple/associations/embedded.rb +1 -15
  18. data/lib/ripple/associations/instantiators.rb +0 -13
  19. data/lib/ripple/associations/linked.rb +41 -19
  20. data/lib/ripple/associations/many.rb +0 -14
  21. data/lib/ripple/associations/many_embedded_proxy.rb +0 -14
  22. data/lib/ripple/associations/many_linked_proxy.rb +39 -18
  23. data/lib/ripple/associations/many_reference_proxy.rb +93 -0
  24. data/lib/ripple/associations/many_stored_key_proxy.rb +76 -0
  25. data/lib/ripple/associations/one.rb +1 -15
  26. data/lib/ripple/associations/one_embedded_proxy.rb +0 -14
  27. data/lib/ripple/associations/one_key_proxy.rb +58 -0
  28. data/lib/ripple/associations/one_linked_proxy.rb +4 -14
  29. data/lib/ripple/associations/one_stored_key_proxy.rb +43 -0
  30. data/lib/ripple/associations/proxy.rb +8 -14
  31. data/lib/ripple/attribute_methods.rb +19 -17
  32. data/lib/ripple/attribute_methods/dirty.rb +19 -15
  33. data/lib/ripple/attribute_methods/query.rb +0 -14
  34. data/lib/ripple/attribute_methods/read.rb +0 -14
  35. data/lib/ripple/attribute_methods/write.rb +0 -14
  36. data/lib/ripple/callbacks.rb +10 -16
  37. data/lib/ripple/conflict/basic_resolver.rb +82 -0
  38. data/lib/ripple/conflict/document_hooks.rb +20 -0
  39. data/lib/ripple/conflict/resolver.rb +71 -0
  40. data/lib/ripple/conflict/test_helper.rb +33 -0
  41. data/lib/ripple/conversion.rb +0 -14
  42. data/lib/ripple/core_ext.rb +1 -14
  43. data/lib/ripple/core_ext/casting.rb +19 -19
  44. data/lib/ripple/core_ext/object.rb +8 -0
  45. data/lib/ripple/document.rb +21 -16
  46. data/lib/ripple/document/bucket_access.rb +0 -14
  47. data/lib/ripple/document/finders.rb +17 -23
  48. data/lib/ripple/document/key.rb +8 -28
  49. data/lib/ripple/document/link.rb +30 -0
  50. data/lib/ripple/document/persistence.rb +12 -20
  51. data/lib/ripple/embedded_document.rb +10 -15
  52. data/lib/ripple/embedded_document/around_callbacks.rb +18 -0
  53. data/lib/ripple/embedded_document/finders.rb +7 -18
  54. data/lib/ripple/embedded_document/persistence.rb +5 -17
  55. data/lib/ripple/i18n.rb +0 -14
  56. data/lib/ripple/inspection.rb +21 -15
  57. data/lib/ripple/locale/en.yml +9 -13
  58. data/lib/ripple/nested_attributes.rb +33 -39
  59. data/lib/ripple/observable.rb +0 -13
  60. data/lib/ripple/properties.rb +1 -14
  61. data/lib/ripple/property_type_mismatch.rb +0 -14
  62. data/lib/ripple/railtie.rb +4 -14
  63. data/lib/ripple/railties/ripple.rake +86 -0
  64. data/lib/ripple/serialization.rb +11 -11
  65. data/lib/ripple/test_server.rb +36 -0
  66. data/lib/ripple/timestamps.rb +0 -13
  67. data/lib/ripple/translation.rb +4 -14
  68. data/lib/ripple/validations.rb +1 -15
  69. data/lib/ripple/validations/associated_validator.rb +26 -17
  70. data/lib/ripple/version.rb +3 -0
  71. data/ripple.gemspec +24 -35
  72. data/spec/integration/ripple/associations_spec.rb +89 -58
  73. data/spec/integration/ripple/conflict_resolution_spec.rb +298 -0
  74. data/spec/integration/ripple/nested_attributes_spec.rb +19 -19
  75. data/spec/integration/ripple/persistence_spec.rb +15 -34
  76. data/spec/integration/ripple/search_associations_spec.rb +31 -0
  77. data/spec/ripple/associations/many_embedded_proxy_spec.rb +23 -36
  78. data/spec/ripple/associations/many_linked_proxy_spec.rb +133 -45
  79. data/spec/ripple/associations/many_reference_proxy_spec.rb +170 -0
  80. data/spec/ripple/associations/many_stored_key_proxy_spec.rb +158 -0
  81. data/spec/ripple/associations/one_embedded_proxy_spec.rb +24 -37
  82. data/spec/ripple/associations/one_key_proxy_spec.rb +82 -0
  83. data/spec/ripple/associations/one_linked_proxy_spec.rb +22 -23
  84. data/spec/ripple/associations/one_stored_key_proxy_spec.rb +72 -0
  85. data/spec/ripple/associations/proxy_spec.rb +21 -15
  86. data/spec/ripple/associations_spec.rb +54 -23
  87. data/spec/ripple/attribute_methods/dirty_spec.rb +56 -5
  88. data/spec/ripple/attribute_methods_spec.rb +47 -21
  89. data/spec/ripple/bucket_access_spec.rb +4 -17
  90. data/spec/ripple/callbacks_spec.rb +52 -15
  91. data/spec/ripple/conflict/resolver_spec.rb +42 -0
  92. data/spec/ripple/conversion_spec.rb +2 -15
  93. data/spec/ripple/core_ext_spec.rb +12 -15
  94. data/spec/ripple/document/link_spec.rb +67 -0
  95. data/spec/ripple/document_spec.rb +34 -19
  96. data/spec/ripple/embedded_document/finders_spec.rb +12 -19
  97. data/spec/ripple/embedded_document/persistence_spec.rb +20 -26
  98. data/spec/ripple/embedded_document_spec.rb +44 -34
  99. data/spec/ripple/finders_spec.rb +58 -29
  100. data/spec/ripple/inspection_spec.rb +40 -37
  101. data/spec/ripple/key_spec.rb +5 -17
  102. data/spec/ripple/observable_spec.rb +3 -16
  103. data/spec/ripple/persistence_spec.rb +134 -18
  104. data/spec/ripple/properties_spec.rb +21 -15
  105. data/spec/ripple/ripple_spec.rb +1 -14
  106. data/spec/ripple/serialization_spec.rb +16 -17
  107. data/spec/ripple/timestamps_spec.rb +73 -52
  108. data/spec/ripple/validations/associated_validator_spec.rb +69 -25
  109. data/spec/ripple/validations_spec.rb +3 -16
  110. data/spec/spec_helper.rb +17 -18
  111. data/spec/support/associations.rb +1 -1
  112. data/spec/support/associations/proxies.rb +0 -13
  113. data/spec/support/integration_setup.rb +11 -0
  114. data/spec/support/mocks.rb +0 -13
  115. data/spec/support/models.rb +33 -2
  116. data/spec/support/models/address.rb +1 -16
  117. data/spec/support/models/box.rb +7 -14
  118. data/spec/support/models/car.rb +27 -1
  119. data/spec/support/models/cardboard_box.rb +0 -14
  120. data/spec/support/models/clock.rb +6 -15
  121. data/spec/support/models/clock_observer.rb +0 -14
  122. data/spec/support/models/credit_card.rb +5 -0
  123. data/spec/support/models/customer.rb +0 -14
  124. data/spec/support/models/email.rb +0 -14
  125. data/spec/support/models/family.rb +1 -13
  126. data/spec/support/models/favorite.rb +0 -14
  127. data/spec/support/models/invoice.rb +0 -14
  128. data/spec/support/models/late_invoice.rb +0 -14
  129. data/spec/support/models/nested.rb +12 -0
  130. data/spec/support/models/ninja.rb +7 -0
  131. data/spec/support/models/note.rb +0 -14
  132. data/spec/support/models/page.rb +1 -15
  133. data/spec/support/models/paid_invoice.rb +0 -14
  134. data/spec/support/models/post.rb +12 -0
  135. data/spec/support/models/profile.rb +7 -0
  136. data/spec/support/models/subscription.rb +26 -0
  137. data/spec/support/models/tasks.rb +0 -18
  138. data/spec/support/models/team.rb +11 -0
  139. data/spec/support/models/transactions.rb +17 -0
  140. data/spec/support/models/tree.rb +2 -16
  141. data/spec/support/models/user.rb +14 -16
  142. data/spec/support/models/widget.rb +8 -14
  143. data/spec/support/search.rb +14 -0
  144. data/spec/support/test_server.rb +22 -12
  145. data/spec/support/test_server.yml.example +14 -2
  146. metadata +223 -59
  147. data/lib/rails/generators/ripple/test/templates/test_server.rb +0 -46
  148. data/spec/support/models/driver.rb +0 -5
  149. data/spec/support/models/engine.rb +0 -4
  150. data/spec/support/models/passenger.rb +0 -5
  151. data/spec/support/models/seat.rb +0 -4
  152. data/spec/support/models/wheel.rb +0 -5
@@ -1,33 +1,77 @@
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__)
1
+ require 'spec_helper'
15
2
 
16
3
  describe Ripple::Validations::AssociatedValidator do
17
- require 'support/models/family'
4
+ context 'for a one association' do
5
+ # require 'support/models/family'
18
6
 
19
- let(:child) { Child.new }
20
- let(:parent) { Parent.new }
21
- before(:each) { parent.child = child }
7
+ let(:child) { Child.new }
8
+ let(:parent) { Parent.new }
9
+ before(:each) { parent.child = child }
22
10
 
23
- it "is invalid when the associated record is invalid" do
24
- child.should_not be_valid
25
- parent.should_not be_valid
11
+ it "is invalid when the associated record is invalid" do
12
+ child.should_not be_valid
13
+ parent.should_not be_valid
14
+ end
15
+
16
+ it "includes the associated record's validation error messages in the error message" do
17
+ parent.valid?
18
+ parent.errors[:child].size.should == 1
19
+ parent.errors[:child].first.should =~ /is invalid \(Name can't be blank and Age can't be blank\)/
20
+ end
21
+
22
+ it "is valid when the associated record is valid" do
23
+ child.name = 'Coen'
24
+ child.age = 1
25
+ child.should be_valid
26
+ parent.should be_valid
27
+ end
26
28
  end
27
29
 
28
- it "is valid when the associated record is valid" do
29
- child.name = 'Coen'
30
- child.should be_valid
31
- parent.should be_valid
30
+ context 'for a many association' do
31
+ # require 'support/models/team'
32
+
33
+ let(:team) { Team.new }
34
+ let(:ichiro) { Player.new(:name => 'Ichiro', :position => 'Right Field') }
35
+ let(:satchel_paige) { Player.new(:position => 'Pitcher') }
36
+ let(:unknown) { Player.new }
37
+
38
+ before(:each) do
39
+ team.players << ichiro
40
+ team.players << satchel_paige
41
+ team.players << unknown
42
+ end
43
+
44
+ it 'is invalid when the associated records are invalid' do
45
+ satchel_paige.should_not be_valid
46
+ unknown.should_not be_valid
47
+ team.should_not be_valid
48
+ end
49
+
50
+ it "includes the associated records' validation error messages in the error message" do
51
+ team.valid?
52
+ team.errors[:players].size.should == 1
53
+
54
+ expected_errors = [
55
+ "for player 2: Name can't be blank",
56
+ "for player 3: Name can't be blank and Position can't be blank"
57
+ ]
58
+
59
+ expected_errors = expected_errors.join('; ')
60
+ team.errors[:players].first.should == "are invalid (#{expected_errors})"
61
+ end
62
+
63
+ it 'is valid when the associated records are all valid' do
64
+ ichiro.position = 'Right Field'
65
+ ichiro.should be_valid
66
+
67
+ satchel_paige.name = 'Satchel Paige'
68
+ satchel_paige.should be_valid
69
+
70
+ unknown.name = 'John Doe'
71
+ unknown.position = 'First Base'
72
+ unknown.should be_valid
73
+
74
+ team.should be_valid
75
+ end
32
76
  end
33
77
  end
@@ -1,20 +1,7 @@
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__)
1
+ require 'spec_helper'
15
2
 
16
3
  describe Ripple::Validations do
17
- require 'support/models/box'
4
+ # require 'support/models/box'
18
5
 
19
6
  before :each do
20
7
  @box = Box.new
@@ -77,7 +64,7 @@ describe Ripple::Validations do
77
64
  end
78
65
 
79
66
  it "should allow unexpected exceptions to be raised" do
80
- robject = mock("robject", :key => @box.key, "data=" => true)
67
+ robject = mock("robject", :key => @box.key, "data=" => true, "content_type=" => true)
81
68
  robject.should_receive(:store).and_raise(Riak::HTTPFailedRequest.new(:post, 200, 404, {}, "404 not found"))
82
69
  @box.stub!(:robject).and_return(robject)
83
70
  @box.stub!(:valid?).and_return(true)
@@ -1,33 +1,32 @@
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
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
15
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
16
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'riak-client','lib'))
17
4
 
18
5
  require 'rubygems' # Use the gems path only for the spec suite
19
6
  require 'ripple'
7
+ require 'ripple/conflict/test_helper'
20
8
  require 'rspec'
21
9
 
22
- Dir[File.join(File.dirname(__FILE__), "support", "*.rb")].each {|f| require f }
10
+ # Only the tests should really get away with this.
11
+ Riak.disable_list_keys_warnings = true
12
+
13
+ %w[
14
+ integration_setup
15
+ mocks
16
+ test_server
17
+ search
18
+ models
19
+ associations
20
+ ].each do |file|
21
+ require File.join("support", file)
22
+ end
23
23
 
24
24
  RSpec.configure do |config|
25
25
  config.mock_with :rspec
26
- config.after(:each) do
27
- $test_server.recycle if $test_server
28
- end
29
26
 
30
- config.filter_run :focus => true
27
+ config.treat_symbols_as_metadata_keys_with_true_values = true
28
+ config.filter_run :focus
31
29
  config.run_all_when_everything_filtered = true
32
30
  config.debug = true
31
+ config.include Ripple::Conflict::TestHelper
33
32
  end
@@ -1 +1 @@
1
- require File.expand_path("../associations/proxies", __FILE__)
1
+ require 'support/associations/proxies'
@@ -1,16 +1,3 @@
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
1
 
15
2
 
16
3
  class FakeNilProxy < Ripple::Associations::Proxy
@@ -0,0 +1,11 @@
1
+ # auto-tag all integration specs with :integration => true
2
+ module IntegrationSpecs
3
+ def self.included(klass)
4
+ klass.metadata[:integration] = true
5
+ end
6
+ end
7
+
8
+ RSpec.configure do |config|
9
+ config.include IntegrationSpecs, :example_group => { :file_path => %r{spec/integration} }
10
+ end
11
+
@@ -1,16 +1,3 @@
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
1
 
15
2
  def mock_response(overrides={})
16
3
  {:headers => {"content-type" => ["application/json"]}, :body => '{}'}.merge(overrides)
@@ -1,3 +1,34 @@
1
- Dir[File.expand_path("../models/*.rb", __FILE__)].each do |file|
2
- require "support/models/#{File.basename(file)}"
1
+ # You MUST add models to this file, in the correct order by
2
+ # dependency (no deps at top). There is no auto-require.
3
+ %w[
4
+ note
5
+ page
6
+ box
7
+ car
8
+ clock
9
+ customer
10
+ email
11
+ family
12
+ favorite
13
+ subscription
14
+ team
15
+ transactions
16
+ tree
17
+ widget
18
+ address
19
+ cardboard_box
20
+ clock_observer
21
+ invoice
22
+ paid_invoice
23
+ late_invoice
24
+ company
25
+ profile
26
+ user
27
+ ninja
28
+ tasks
29
+ credit_card
30
+ post
31
+ nested
32
+ ].each do |file|
33
+ require File.join("support", "models", file)
3
34
  end
@@ -1,22 +1,7 @@
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
-
15
- require 'support/models/note'
16
-
17
1
  class Address
18
2
  include Ripple::EmbeddedDocument
19
3
  property :street, String, :presence => true
4
+ property :kind, String, :presence => true
20
5
  many :notes
21
6
  embedded_in :user
22
7
  end
@@ -1,19 +1,12 @@
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
-
15
1
  class Box
16
2
  include Ripple::Document
17
3
  property :shape, String
4
+ many :sides, :class_name => 'BoxSide'
18
5
  timestamps!
19
6
  end
7
+
8
+ class BoxSide
9
+ include Ripple::EmbeddedDocument
10
+ embedded_in :box
11
+ property :material, String
12
+ end
@@ -1,6 +1,32 @@
1
+ class Driver
2
+ include Ripple::Document
3
+ property :name, String
4
+ key_on :name
5
+ end
6
+
7
+ class Passenger
8
+ include Ripple::Document
9
+ property :name, String
10
+ end
11
+
12
+ class Engine
13
+ include Ripple::EmbeddedDocument
14
+ property :displacement, String
15
+ end
16
+
17
+ class Wheel
18
+ include Ripple::Document
19
+ property :diameter, Integer
20
+ end
21
+
22
+ class Seat
23
+ include Ripple::EmbeddedDocument
24
+ property :color, String
25
+ end
26
+
1
27
  class Car
2
28
  include Ripple::Document
3
-
29
+
4
30
  property :make, String
5
31
  property :model, String
6
32
 
@@ -1,16 +1,2 @@
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
-
15
1
  class CardboardBox < Box
16
2
  end
@@ -1,19 +1,10 @@
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
-
15
-
16
1
  class Clock
17
2
  include Ripple::Document
18
3
  timestamps!
4
+ many :modes
5
+ end
6
+
7
+ class Mode
8
+ include Ripple::EmbeddedDocument
9
+ timestamps!
19
10
  end
@@ -1,16 +1,2 @@
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
-
15
1
  class ClockObserver < ActiveModel::Observer
16
2
  end
@@ -0,0 +1,5 @@
1
+ class CreditCard
2
+ include Ripple::Document
3
+ one :user, :using => :key
4
+ property :number, Integer
5
+ end
@@ -1,17 +1,3 @@
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
-
15
1
  class Customer
16
2
  include Ripple::Document
17
3
  end