ripple 0.8.0.beta2 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rails/generators/ripple/model/model_generator.rb +14 -0
- data/lib/rails/generators/ripple_generator.rb +17 -0
- data/lib/ripple.rb +7 -1
- data/lib/ripple/associations.rb +35 -0
- data/lib/ripple/attribute_methods.rb +0 -6
- data/lib/ripple/callbacks.rb +5 -0
- data/lib/ripple/conversion.rb +5 -0
- data/lib/ripple/core_ext.rb +13 -0
- data/lib/ripple/document.rb +9 -0
- data/lib/ripple/document/finders.rb +1 -1
- data/lib/ripple/document/key.rb +49 -0
- data/lib/ripple/document/persistence.rb +1 -1
- data/lib/ripple/embedded_document.rb +3 -1
- data/lib/ripple/embedded_document/finders.rb +1 -0
- data/lib/ripple/embedded_document/persistence.rb +15 -5
- data/lib/ripple/inspection.rb +1 -0
- data/lib/ripple/property_type_mismatch.rb +2 -0
- data/lib/ripple/railtie.rb +2 -0
- data/lib/ripple/timestamps.rb +5 -0
- data/lib/ripple/translation.rb +2 -0
- data/lib/ripple/validations.rb +7 -2
- data/spec/ripple/conversion_spec.rb +6 -6
- data/spec/ripple/core_ext_spec.rb +13 -0
- data/spec/ripple/document_spec.rb +30 -0
- data/spec/ripple/finders_spec.rb +6 -1
- data/spec/ripple/key_spec.rb +43 -0
- data/spec/ripple/timestamps_spec.rb +14 -0
- data/spec/support/associations/proxies.rb +15 -1
- data/spec/support/mocks.rb +15 -1
- data/spec/support/models/address.rb +15 -1
- data/spec/support/models/box.rb +14 -1
- data/spec/support/models/cardboard_box.rb +14 -1
- data/spec/support/models/clock.rb +14 -1
- data/spec/support/models/customer.rb +14 -1
- data/spec/support/models/email.rb +14 -1
- data/spec/support/models/family.rb +14 -1
- data/spec/support/models/favorite.rb +14 -1
- data/spec/support/models/invoice.rb +14 -1
- data/spec/support/models/late_invoice.rb +13 -0
- data/spec/support/models/note.rb +14 -1
- data/spec/support/models/page.rb +14 -1
- data/spec/support/models/paid_invoice.rb +14 -1
- data/spec/support/models/tasks.rb +14 -0
- data/spec/support/models/tree.rb +15 -1
- data/spec/support/models/user.rb +15 -1
- data/spec/support/models/widget.rb +13 -0
- metadata +10 -11
@@ -1,3 +1,17 @@
|
|
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
|
require 'rails/generators/ripple_generator'
|
2
16
|
|
3
17
|
module Ripple
|
@@ -1,8 +1,23 @@
|
|
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.
|
1
14
|
require "rails/generators/named_base"
|
2
15
|
require "rails/generators/active_model"
|
3
16
|
|
4
17
|
module Ripple
|
18
|
+
# ActiveModel generators for use in a Rails project.
|
5
19
|
module Generators
|
20
|
+
# @private
|
6
21
|
class Base < ::Rails::Generators::NamedBase
|
7
22
|
|
8
23
|
def self.source_root
|
@@ -11,6 +26,7 @@ module Ripple
|
|
11
26
|
end
|
12
27
|
end
|
13
28
|
|
29
|
+
# Generator for a {Ripple::Document} model
|
14
30
|
class ActiveModel < ::Rails::Generators::ActiveModel
|
15
31
|
def self.all(klass)
|
16
32
|
"#{klass}.all"
|
@@ -47,6 +63,7 @@ module Ripple
|
|
47
63
|
end
|
48
64
|
end
|
49
65
|
|
66
|
+
# @private
|
50
67
|
module Rails
|
51
68
|
module Generators
|
52
69
|
class GeneratedAttribute #:nodoc:
|
data/lib/ripple.rb
CHANGED
@@ -57,15 +57,19 @@ module Ripple
|
|
57
57
|
Thread.current[:ripple_client] = value
|
58
58
|
end
|
59
59
|
|
60
|
+
# Sets the global Ripple configuration.
|
60
61
|
def config=(hash)
|
61
62
|
self.client = nil
|
62
63
|
@config = hash.symbolize_keys
|
63
64
|
end
|
64
65
|
|
66
|
+
# Reads the global Ripple configuration.
|
65
67
|
def config
|
66
68
|
@config ||= {}
|
67
69
|
end
|
68
70
|
|
71
|
+
# Loads the Ripple configuration from a given YAML file.
|
72
|
+
# Evaluates the configuration with ERB before loading.
|
69
73
|
def load_configuration(config_file, config_keys = [:ripple])
|
70
74
|
config_file = File.expand_path(config_file)
|
71
75
|
config_hash = YAML.load(ERB.new(File.read(config_file)).result).with_indifferent_access
|
@@ -76,7 +80,9 @@ module Ripple
|
|
76
80
|
end
|
77
81
|
alias_method :load_config, :load_configuration
|
78
82
|
end
|
79
|
-
|
83
|
+
|
84
|
+
# Exception raised when the path passed to
|
85
|
+
# {Ripple::load_configuration} does not point to a existing file.
|
80
86
|
class MissingConfiguration < StandardError
|
81
87
|
include Translation
|
82
88
|
def initialize(file_path)
|
data/lib/ripple/associations.rb
CHANGED
@@ -14,6 +14,38 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
+
# Adds associations via links and embedding to {Ripple::Document}
|
18
|
+
# models. Examples:
|
19
|
+
#
|
20
|
+
# # Documents can contain embedded documents, and link to other standalone documents
|
21
|
+
# # via associations using the many and one class methods.
|
22
|
+
# class Person
|
23
|
+
# include Ripple::Document
|
24
|
+
# property :name, String
|
25
|
+
# many :addresses
|
26
|
+
# many :friends, :class_name => "Person"
|
27
|
+
# one :account
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
# # Account and Address are embeddable documents
|
31
|
+
# class Account
|
32
|
+
# include Ripple::EmbeddedDocument
|
33
|
+
# property :paid_until, Time
|
34
|
+
# embedded_in :person # Adds "person" method to get parent document
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# class Address
|
38
|
+
# include Ripple::EmbeddedDocument
|
39
|
+
# property :street, String
|
40
|
+
# property :city, String
|
41
|
+
# property :state, String
|
42
|
+
# property :zip, String
|
43
|
+
# end
|
44
|
+
#
|
45
|
+
# person = Person.find("adamhunter")
|
46
|
+
# person.friends << Person.find("seancribbs") # Links to people/seancribbs with tag "friend"
|
47
|
+
# person.addresses << Address.new(:street => "100 Main Street") # Adds an embedded address
|
48
|
+
# person.account.paid_until = 3.months.from_now
|
17
49
|
module Associations
|
18
50
|
extend ActiveSupport::Concern
|
19
51
|
extend ActiveSupport::Autoload
|
@@ -100,6 +132,8 @@ module Ripple
|
|
100
132
|
end
|
101
133
|
end
|
102
134
|
|
135
|
+
# The "reflection" for an association - metadata about how it is
|
136
|
+
# configured.
|
103
137
|
class Association
|
104
138
|
include Ripple::Translation
|
105
139
|
attr_reader :type, :name, :options
|
@@ -210,6 +244,7 @@ module Ripple
|
|
210
244
|
end
|
211
245
|
end
|
212
246
|
|
247
|
+
# @private
|
213
248
|
def type_matches?(value)
|
214
249
|
case
|
215
250
|
when polymorphic?
|
@@ -49,8 +49,6 @@ module Ripple
|
|
49
49
|
end
|
50
50
|
|
51
51
|
module InstanceMethods
|
52
|
-
attr_accessor :key
|
53
|
-
|
54
52
|
# A copy of the values of all attributes in the Document. The result
|
55
53
|
# is not memoized, so use sparingly. This does not include associated objects,
|
56
54
|
# nor embedded documents.
|
@@ -76,10 +74,6 @@ module Ripple
|
|
76
74
|
end
|
77
75
|
end
|
78
76
|
|
79
|
-
def key=(value)
|
80
|
-
@key = value.to_s
|
81
|
-
end
|
82
|
-
|
83
77
|
# @private
|
84
78
|
def initialize(attrs={})
|
85
79
|
super()
|
data/lib/ripple/callbacks.rb
CHANGED
@@ -14,6 +14,8 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
+
# Adds lifecycle callbacks to {Ripple::Document} models, in the typical
|
18
|
+
# ActiveModel fashion.
|
17
19
|
module Callbacks
|
18
20
|
extend ActiveSupport::Concern
|
19
21
|
|
@@ -24,6 +26,7 @@ module Ripple
|
|
24
26
|
end
|
25
27
|
|
26
28
|
module ClassMethods
|
29
|
+
# Defines a callback to be run before validations.
|
27
30
|
def before_validation(*args, &block)
|
28
31
|
options = args.last
|
29
32
|
if options.is_a?(Hash) && options[:on]
|
@@ -33,6 +36,7 @@ module Ripple
|
|
33
36
|
set_callback(:validation, :before, *args, &block)
|
34
37
|
end
|
35
38
|
|
39
|
+
# Defines a callback to be run after validations.
|
36
40
|
def after_validation(*args, &block)
|
37
41
|
options = args.extract_options!
|
38
42
|
options[:prepend] = true
|
@@ -43,6 +47,7 @@ module Ripple
|
|
43
47
|
end
|
44
48
|
end
|
45
49
|
|
50
|
+
# @private
|
46
51
|
module InstanceMethods
|
47
52
|
# @private
|
48
53
|
def save(*args, &block)
|
data/lib/ripple/conversion.rb
CHANGED
@@ -14,21 +14,26 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
+
# Provides ActionPack compatibility for {Ripple::Document} models.
|
17
18
|
module Conversion
|
18
19
|
include ActiveModel::Conversion
|
19
20
|
|
21
|
+
# True if this is a new document
|
20
22
|
def new_record?
|
21
23
|
new?
|
22
24
|
end
|
23
25
|
|
26
|
+
# True if this is not a new document
|
24
27
|
def persisted?
|
25
28
|
!new?
|
26
29
|
end
|
27
30
|
|
31
|
+
# Converts to a view key
|
28
32
|
def to_key
|
29
33
|
new? ? nil : [key]
|
30
34
|
end
|
31
35
|
|
36
|
+
# Converts to a URL parameter
|
32
37
|
def to_param
|
33
38
|
key
|
34
39
|
end
|
data/lib/ripple/core_ext.rb
CHANGED
@@ -1 +1,14 @@
|
|
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.
|
1
14
|
require 'ripple/core_ext/casting'
|
data/lib/ripple/document.rb
CHANGED
@@ -44,11 +44,13 @@ module Ripple
|
|
44
44
|
|
45
45
|
autoload :BucketAccess
|
46
46
|
autoload :Finders
|
47
|
+
autoload :Key
|
47
48
|
autoload :Persistence
|
48
49
|
|
49
50
|
included do
|
50
51
|
extend ActiveModel::Naming
|
51
52
|
extend BucketAccess
|
53
|
+
include Ripple::Document::Key
|
52
54
|
include Ripple::Document::Persistence
|
53
55
|
extend Ripple::Properties
|
54
56
|
include Ripple::AttributeMethods
|
@@ -71,6 +73,13 @@ module Ripple
|
|
71
73
|
def _root_document
|
72
74
|
self
|
73
75
|
end
|
76
|
+
|
77
|
+
# Returns true if the +comparison_object+ is the same object, or is of the same type and has the same key.
|
78
|
+
def ==(comparison_object)
|
79
|
+
comparison_object.equal?(self) ||
|
80
|
+
(comparison_object.class < Document && (comparison_object.instance_of?(self.class) || comparison_object.class.bucket.name == self.class.bucket.name) &&
|
81
|
+
comparison_object.key == key && !comparison_object.new?)
|
82
|
+
end
|
74
83
|
end
|
75
84
|
end
|
76
85
|
end
|
@@ -56,7 +56,7 @@ module Ripple
|
|
56
56
|
# @return [Array<Document>] a list of found documents, including nil for missing documents
|
57
57
|
def find(*args)
|
58
58
|
args.flatten!
|
59
|
-
return nil if args.empty?
|
59
|
+
return nil if args.empty? || args.all?(&:blank?)
|
60
60
|
return find_one(args.first) if args.one?
|
61
61
|
args.map {|key| find_one(key) }
|
62
62
|
end
|
@@ -0,0 +1,49 @@
|
|
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 'ripple'
|
15
|
+
|
16
|
+
module Ripple
|
17
|
+
module Document
|
18
|
+
module Key
|
19
|
+
extend ActiveSupport::Concern
|
20
|
+
|
21
|
+
module ClassMethods
|
22
|
+
# Defines the key to be derived from a property.
|
23
|
+
# @param [String,Symbol] prop the property to derive the key from
|
24
|
+
def key_on(prop)
|
25
|
+
class_eval <<-CODE
|
26
|
+
def key
|
27
|
+
#{prop}.to_s
|
28
|
+
end
|
29
|
+
def key=(value)
|
30
|
+
self.#{prop} = value
|
31
|
+
end
|
32
|
+
CODE
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module InstanceMethods
|
37
|
+
# Reads the key for this Document.
|
38
|
+
def key
|
39
|
+
@key
|
40
|
+
end
|
41
|
+
|
42
|
+
# Sets the key for this Document.
|
43
|
+
def key=(value)
|
44
|
+
@key = value.to_s
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -14,11 +14,13 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
+
# Represents a document model that is composed into or stored in a parent
|
18
|
+
# Document. Embedded documents may also embed other documents, have
|
19
|
+
# callbacks and validations, but are solely dependent on the parent Document.
|
17
20
|
module EmbeddedDocument
|
18
21
|
extend ActiveSupport::Concern
|
19
22
|
extend ActiveSupport::Autoload
|
20
23
|
|
21
|
-
autoload :Conversion
|
22
24
|
autoload :Finders
|
23
25
|
autoload :Persistence
|
24
26
|
include Translation
|
@@ -14,6 +14,8 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
+
# Exception raised when save is called on an EmbeddedDocument that
|
18
|
+
# is not attached to a root Document.
|
17
19
|
class NoRootDocument < StandardError
|
18
20
|
include Translation
|
19
21
|
def initialize(doc, method)
|
@@ -22,18 +24,24 @@ module Ripple
|
|
22
24
|
end
|
23
25
|
|
24
26
|
module EmbeddedDocument
|
27
|
+
# Adds methods to {Ripple::EmbeddedDocument} that delegate storage
|
28
|
+
# operations to the parent document.
|
25
29
|
module Persistence
|
26
30
|
extend ActiveSupport::Concern
|
27
31
|
|
28
32
|
module ClassMethods
|
33
|
+
# Creates a method that points to the parent document.
|
29
34
|
def embedded_in(parent)
|
30
35
|
define_method(parent) { @_parent_document }
|
31
36
|
end
|
32
37
|
end
|
33
38
|
|
34
39
|
module InstanceMethods
|
35
|
-
|
40
|
+
# The parent document to this embedded document. This may be a
|
41
|
+
# {Ripple::Document} or another {Ripple::EmbeddedDocument}.
|
42
|
+
attr_accessor :_parent_document
|
36
43
|
|
44
|
+
# Whether the root document is unsaved.
|
37
45
|
def new?
|
38
46
|
if _root_document
|
39
47
|
_root_document.new?
|
@@ -42,16 +50,20 @@ module Ripple
|
|
42
50
|
end
|
43
51
|
end
|
44
52
|
|
53
|
+
# Sets this embedded documents attributes and saves the root document.
|
45
54
|
def update_attributes(attrs)
|
46
55
|
self.attributes = attrs
|
47
56
|
save
|
48
57
|
end
|
49
58
|
|
59
|
+
# Updates this embedded document's attribute and saves the
|
60
|
+
# root document, skipping validations.
|
50
61
|
def update_attribute(attribute, value)
|
51
62
|
send("#{attribute}=", value)
|
52
63
|
save(:validate => false)
|
53
64
|
end
|
54
65
|
|
66
|
+
# Saves this embedded document by delegating to the root document.
|
55
67
|
def save(*args)
|
56
68
|
if _root_document
|
57
69
|
_root_document.save(*args)
|
@@ -60,17 +72,15 @@ module Ripple
|
|
60
72
|
end
|
61
73
|
end
|
62
74
|
|
75
|
+
# @private
|
63
76
|
def attributes_for_persistence
|
64
77
|
attributes.merge("_type" => self.class.name)
|
65
78
|
end
|
66
79
|
|
80
|
+
# The root {Ripple::Document} to which this embedded document belongs.
|
67
81
|
def _root_document
|
68
82
|
@_parent_document.try(:_root_document)
|
69
83
|
end
|
70
|
-
|
71
|
-
def _parent_document=(value)
|
72
|
-
@_parent_document = value
|
73
|
-
end
|
74
84
|
end
|
75
85
|
end
|
76
86
|
end
|
data/lib/ripple/inspection.rb
CHANGED
@@ -17,6 +17,7 @@ require 'ripple'
|
|
17
17
|
module Ripple
|
18
18
|
# Makes IRB and other inspect output a bit friendlier
|
19
19
|
module Inspection
|
20
|
+
# A human-readable version of the {Ripple::Document} or {Ripple::EmbeddedDocument}
|
20
21
|
def inspect
|
21
22
|
attribute_list = attributes_for_persistence.except("_type").map {|k,v| "#{k}=#{v.inspect}" }.join(' ')
|
22
23
|
identifier = self.class.embeddable? ? "" : ":#{key || '[new]'}"
|
@@ -14,6 +14,8 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
+
# Exception raised when the value assigned to a document property
|
18
|
+
# cannot be coerced into the property's defined type.
|
17
19
|
class PropertyTypeMismatch < StandardError
|
18
20
|
include Translation
|
19
21
|
def initialize(klass, value)
|
data/lib/ripple/railtie.rb
CHANGED
@@ -14,6 +14,8 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
+
# Railtie for automatic initialization of the Ripple framework
|
18
|
+
# during Rails initialization.
|
17
19
|
class Railtie < Rails::Railtie
|
18
20
|
initializer "ripple.configure_rails_initialization" do
|
19
21
|
Ripple.load_configuration Rails.root.join('config', 'ripple.yml'), [Rails.env]
|
data/lib/ripple/timestamps.rb
CHANGED
@@ -14,10 +14,14 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
+
# Adds automatic creation and update timestamps to a
|
18
|
+
# {Ripple::Document} model.
|
17
19
|
module Timestamps
|
18
20
|
extend ActiveSupport::Concern
|
19
21
|
|
20
22
|
module ClassMethods
|
23
|
+
# Adds the :created_at and :updated_at timestamp properties to
|
24
|
+
# the document.
|
21
25
|
def timestamps!
|
22
26
|
property :created_at, Time, :default => proc { Time.now.utc }
|
23
27
|
property :updated_at, Time
|
@@ -26,6 +30,7 @@ module Ripple
|
|
26
30
|
end
|
27
31
|
|
28
32
|
module InstanceMethods
|
33
|
+
# Sets the :updated_at attribute before saving the document.
|
29
34
|
def touch
|
30
35
|
self.updated_at = Time.now.utc
|
31
36
|
end
|
data/lib/ripple/translation.rb
CHANGED
data/lib/ripple/validations.rb
CHANGED
@@ -14,7 +14,6 @@
|
|
14
14
|
require 'ripple'
|
15
15
|
|
16
16
|
module Ripple
|
17
|
-
|
18
17
|
# Raised by <tt>save!</tt> when the document is invalid. Use the
|
19
18
|
# +document+ method to retrieve the document which did not validate.
|
20
19
|
# begin
|
@@ -32,6 +31,8 @@ module Ripple
|
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
34
|
+
# Adds validations to {Ripple::Document} models. Validations are
|
35
|
+
# executed before saving the document.
|
35
36
|
module Validations
|
36
37
|
extend ActiveSupport::Concern
|
37
38
|
extend ActiveSupport::Autoload
|
@@ -60,11 +61,15 @@ module Ripple
|
|
60
61
|
return false if options[:validate] && !valid?
|
61
62
|
super()
|
62
63
|
end
|
63
|
-
|
64
|
+
|
65
|
+
# Saves the document and raises {DocumentInvalid} exception if
|
66
|
+
# validations fail.
|
64
67
|
def save!
|
65
68
|
(raise Ripple::DocumentInvalid.new(self) unless save) || true
|
66
69
|
end
|
67
70
|
|
71
|
+
# Sets the passed attributes and saves the document, raising a
|
72
|
+
# {DocumentInvalid} exception if the validations fail.
|
68
73
|
def update_attributes!(attrs)
|
69
74
|
self.attributes = attrs
|
70
75
|
save!
|
@@ -14,22 +14,22 @@
|
|
14
14
|
require File.expand_path("../../spec_helper", __FILE__)
|
15
15
|
|
16
16
|
describe Ripple::Conversion do
|
17
|
-
require 'support/models/
|
17
|
+
require 'support/models/box'
|
18
18
|
|
19
19
|
before :each do
|
20
|
-
@
|
21
|
-
@
|
20
|
+
@box = Box.new { |a| a.key = 'some-key' }
|
21
|
+
@box.stub!(:new?).and_return(false)
|
22
22
|
end
|
23
23
|
|
24
24
|
it "should return the key as an array for to_key" do
|
25
|
-
@
|
25
|
+
@box.to_key.should == ['some-key']
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should be able to be converted to a param" do
|
29
|
-
@
|
29
|
+
@box.to_param.should == 'some-key'
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should be able to be converted to a model" do
|
33
|
-
@
|
33
|
+
@box.to_model.should == @box
|
34
34
|
end
|
35
35
|
end
|
@@ -1,3 +1,16 @@
|
|
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.
|
1
14
|
require File.expand_path("../../spec_helper", __FILE__)
|
2
15
|
|
3
16
|
describe Time do
|
@@ -27,6 +27,36 @@ describe Ripple::Document do
|
|
27
27
|
Page.should_not be_embeddable
|
28
28
|
end
|
29
29
|
|
30
|
+
describe "equivalence" do
|
31
|
+
before do
|
32
|
+
class Homepage < Page; end
|
33
|
+
class ErrorPage; include Ripple::Document; self.bucket_name = "pages"; end
|
34
|
+
@doc = Page.new
|
35
|
+
@doc2 = Page.new
|
36
|
+
@sub = Homepage.new
|
37
|
+
@error = ErrorPage.new
|
38
|
+
[@doc,@doc2,@sub,@error].each {|d| d.key = "root"; d.stub!(:new?).and_return(false) }
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should be equal if the same object" do
|
42
|
+
@doc.should == @doc
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should be equal if instance of same class and key" do
|
46
|
+
@doc.should == @doc2
|
47
|
+
@doc.should == @sub
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should be equal if of the same bucket and key" do
|
51
|
+
@doc.should == @error
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should not be equal if new record" do
|
55
|
+
@doc2.stub!(:new?).and_return(true)
|
56
|
+
@doc.should_not == @doc2
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
30
60
|
describe "ActiveModel compatibility" do
|
31
61
|
include ActiveModel::Lint::Tests
|
32
62
|
|
data/spec/ripple/finders_spec.rb
CHANGED
@@ -25,10 +25,15 @@ describe Ripple::Document::Finders do
|
|
25
25
|
Box.stub!(:bucket).and_return(@bucket)
|
26
26
|
end
|
27
27
|
|
28
|
-
it "should return
|
28
|
+
it "should return nil if no keys are passed to find" do
|
29
29
|
Box.find().should be_nil
|
30
30
|
end
|
31
31
|
|
32
|
+
it "should return nil if no valid keys are passed to find" do
|
33
|
+
Box.find(nil).should be_nil
|
34
|
+
Box.find("").should be_nil
|
35
|
+
end
|
36
|
+
|
32
37
|
it "should raise Ripple::DocumentNotFound if an empty array is passed to find!" do
|
33
38
|
lambda { Box.find!() }.should raise_error(Ripple::DocumentNotFound, "Couldn't find document without a key")
|
34
39
|
end
|
@@ -0,0 +1,43 @@
|
|
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.dirname(__FILE__))
|
15
|
+
|
16
|
+
describe Ripple::Document::Key do
|
17
|
+
require 'support/models/box'
|
18
|
+
before do
|
19
|
+
@box = Box.new
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should define key getter and setter" do
|
23
|
+
@box.should respond_to(:key)
|
24
|
+
@box.should respond_to(:key=)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should stringify the assigned key" do
|
28
|
+
@box.key = 2
|
29
|
+
@box.key.should == "2"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should use a property as the key" do
|
33
|
+
class ShapedBox < Box
|
34
|
+
key_on :shape
|
35
|
+
end
|
36
|
+
@box = ShapedBox.new
|
37
|
+
@box.key = "square"
|
38
|
+
@box.key.should == "square"
|
39
|
+
@box.shape.should == "square"
|
40
|
+
@box.shape = "oblong"
|
41
|
+
@box.key.should == "oblong"
|
42
|
+
end
|
43
|
+
end
|
@@ -1,3 +1,17 @@
|
|
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
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
16
|
|
3
17
|
describe Ripple::Timestamps do
|
@@ -1,4 +1,18 @@
|
|
1
|
-
#
|
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
|
+
|
2
16
|
class FakeNilProxy < Ripple::Associations::Proxy
|
3
17
|
def find_target; nil end
|
4
18
|
end
|
data/spec/support/mocks.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
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
|
def mock_response(overrides={})
|
2
16
|
{:headers => {"content-type" => ["application/json"]}, :body => '{}'}.merge(overrides)
|
3
|
-
end
|
17
|
+
end
|
@@ -1,3 +1,17 @@
|
|
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
|
require 'support/models/note'
|
2
16
|
|
3
17
|
class Address
|
@@ -5,4 +19,4 @@ class Address
|
|
5
19
|
property :street, String, :presence => true
|
6
20
|
many :notes
|
7
21
|
embedded_in :user
|
8
|
-
end
|
22
|
+
end
|
data/spec/support/models/box.rb
CHANGED
@@ -1,6 +1,19 @@
|
|
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.
|
1
14
|
|
2
15
|
class Box
|
3
16
|
include Ripple::Document
|
4
17
|
property :shape, String
|
5
18
|
timestamps!
|
6
|
-
end
|
19
|
+
end
|
@@ -1,3 +1,16 @@
|
|
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.
|
1
14
|
|
2
15
|
class CardboardBox < Box
|
3
|
-
end
|
16
|
+
end
|
@@ -1,6 +1,19 @@
|
|
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.
|
1
14
|
|
2
15
|
|
3
16
|
class Clock
|
4
17
|
include Ripple::Document
|
5
18
|
timestamps!
|
6
|
-
end
|
19
|
+
end
|
@@ -1,4 +1,17 @@
|
|
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.
|
1
14
|
|
2
15
|
class Customer
|
3
16
|
include Ripple::Document
|
4
|
-
end
|
17
|
+
end
|
@@ -1,4 +1,17 @@
|
|
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.
|
1
14
|
|
2
15
|
class Email
|
3
16
|
include Ripple::Document
|
4
|
-
end
|
17
|
+
end
|
@@ -1,3 +1,16 @@
|
|
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.
|
1
14
|
class Parent
|
2
15
|
include Ripple::Document
|
3
16
|
one :child
|
@@ -11,4 +24,4 @@ end
|
|
11
24
|
|
12
25
|
class Grandchild
|
13
26
|
include Ripple::EmbeddedDocument
|
14
|
-
end
|
27
|
+
end
|
@@ -1,4 +1,17 @@
|
|
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.
|
1
14
|
|
2
15
|
class Favorite
|
3
16
|
include Ripple::EmbeddedDocument
|
4
|
-
end
|
17
|
+
end
|
@@ -1,6 +1,19 @@
|
|
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.
|
1
14
|
|
2
15
|
class Invoice
|
3
16
|
include Ripple::Document
|
4
17
|
one :customer
|
5
18
|
one :note
|
6
|
-
end
|
19
|
+
end
|
@@ -1,3 +1,16 @@
|
|
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.
|
1
14
|
|
2
15
|
class LateInvoice < Invoice
|
3
16
|
end
|
data/spec/support/models/note.rb
CHANGED
@@ -1,4 +1,17 @@
|
|
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.
|
1
14
|
|
2
15
|
class Note
|
3
16
|
include Ripple::EmbeddedDocument
|
4
|
-
end
|
17
|
+
end
|
data/spec/support/models/page.rb
CHANGED
@@ -1,4 +1,17 @@
|
|
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.
|
1
14
|
|
2
15
|
class Page
|
3
16
|
include Ripple::Document
|
4
|
-
end
|
17
|
+
end
|
@@ -1,4 +1,17 @@
|
|
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.
|
1
14
|
|
2
15
|
class PaidInvoice < Invoice
|
3
16
|
self.bucket_name = "paid"
|
4
|
-
end
|
17
|
+
end
|
@@ -1,3 +1,17 @@
|
|
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
|
class Person
|
2
16
|
include Ripple::Document
|
3
17
|
many :tasks
|
data/spec/support/models/tree.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
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
|
class Leaf; end;
|
2
16
|
class Branch; end;
|
3
|
-
class Trunk; end
|
17
|
+
class Trunk; end
|
data/spec/support/models/user.rb
CHANGED
@@ -1,6 +1,20 @@
|
|
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
|
require 'support/models/address'
|
2
16
|
|
3
17
|
class User
|
4
18
|
include Ripple::Document
|
5
19
|
many :addresses
|
6
|
-
end
|
20
|
+
end
|
@@ -1,3 +1,16 @@
|
|
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.
|
1
14
|
|
2
15
|
class Widget
|
3
16
|
include Ripple::Document
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ripple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 8
|
8
8
|
- 0
|
9
|
-
|
10
|
-
version: 0.8.0.beta2
|
9
|
+
version: 0.8.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Sean Cribbs
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-08-
|
17
|
+
date: 2010-08-31 00:00:00 -04:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -47,8 +46,7 @@ dependencies:
|
|
47
46
|
- 0
|
48
47
|
- 8
|
49
48
|
- 0
|
50
|
-
|
51
|
-
version: 0.8.0.beta2
|
49
|
+
version: 0.8.0
|
52
50
|
type: :runtime
|
53
51
|
version_requirements: *id002
|
54
52
|
- !ruby/object:Gem::Dependency
|
@@ -115,6 +113,7 @@ files:
|
|
115
113
|
- lib/ripple/core_ext.rb
|
116
114
|
- lib/ripple/document/bucket_access.rb
|
117
115
|
- lib/ripple/document/finders.rb
|
116
|
+
- lib/ripple/document/key.rb
|
118
117
|
- lib/ripple/document/persistence.rb
|
119
118
|
- lib/ripple/document.rb
|
120
119
|
- lib/ripple/embedded_document/finders.rb
|
@@ -152,6 +151,7 @@ files:
|
|
152
151
|
- spec/ripple/embedded_document_spec.rb
|
153
152
|
- spec/ripple/finders_spec.rb
|
154
153
|
- spec/ripple/inspection_spec.rb
|
154
|
+
- spec/ripple/key_spec.rb
|
155
155
|
- spec/ripple/persistence_spec.rb
|
156
156
|
- spec/ripple/properties_spec.rb
|
157
157
|
- spec/ripple/ripple_spec.rb
|
@@ -197,13 +197,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
197
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
198
|
none: false
|
199
199
|
requirements:
|
200
|
-
- - "
|
200
|
+
- - ">="
|
201
201
|
- !ruby/object:Gem::Version
|
202
202
|
segments:
|
203
|
-
-
|
204
|
-
|
205
|
-
- 1
|
206
|
-
version: 1.3.1
|
203
|
+
- 0
|
204
|
+
version: "0"
|
207
205
|
requirements: []
|
208
206
|
|
209
207
|
rubyforge_project:
|
@@ -231,6 +229,7 @@ test_files:
|
|
231
229
|
- spec/ripple/embedded_document_spec.rb
|
232
230
|
- spec/ripple/finders_spec.rb
|
233
231
|
- spec/ripple/inspection_spec.rb
|
232
|
+
- spec/ripple/key_spec.rb
|
234
233
|
- spec/ripple/persistence_spec.rb
|
235
234
|
- spec/ripple/properties_spec.rb
|
236
235
|
- spec/ripple/ripple_spec.rb
|