wyngle-ripple 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. data/.gitignore +35 -0
  2. data/Gemfile +17 -0
  3. data/Gemfile.lock +133 -0
  4. data/Gemfile.rails30 +3 -0
  5. data/Gemfile.rails31 +3 -0
  6. data/Gemfile.rails32 +3 -0
  7. data/Guardfile +17 -0
  8. data/LICENSE +16 -0
  9. data/README.markdown +166 -0
  10. data/RELEASE_NOTES.textile +286 -0
  11. data/Rakefile +63 -0
  12. data/lib/rails/generators/ripple/configuration/configuration_generator.rb +13 -0
  13. data/lib/rails/generators/ripple/configuration/templates/ripple.yml +25 -0
  14. data/lib/rails/generators/ripple/js/js_generator.rb +13 -0
  15. data/lib/rails/generators/ripple/js/templates/js/contrib.js +63 -0
  16. data/lib/rails/generators/ripple/js/templates/js/iso8601.js +76 -0
  17. data/lib/rails/generators/ripple/js/templates/js/ripple.js +132 -0
  18. data/lib/rails/generators/ripple/model/model_generator.rb +20 -0
  19. data/lib/rails/generators/ripple/model/templates/model.rb.erb +10 -0
  20. data/lib/rails/generators/ripple/observer/observer_generator.rb +16 -0
  21. data/lib/rails/generators/ripple/observer/templates/observer.rb.erb +2 -0
  22. data/lib/rails/generators/ripple/test/templates/cucumber.rb.erb +7 -0
  23. data/lib/rails/generators/ripple/test/test_generator.rb +45 -0
  24. data/lib/rails/generators/ripple_generator.rb +79 -0
  25. data/lib/ripple.rb +86 -0
  26. data/lib/ripple/associations.rb +380 -0
  27. data/lib/ripple/associations/embedded.rb +35 -0
  28. data/lib/ripple/associations/instantiators.rb +26 -0
  29. data/lib/ripple/associations/linked.rb +65 -0
  30. data/lib/ripple/associations/many.rb +38 -0
  31. data/lib/ripple/associations/many_embedded_proxy.rb +39 -0
  32. data/lib/ripple/associations/many_linked_proxy.rb +66 -0
  33. data/lib/ripple/associations/many_reference_proxy.rb +95 -0
  34. data/lib/ripple/associations/many_stored_key_proxy.rb +76 -0
  35. data/lib/ripple/associations/one.rb +20 -0
  36. data/lib/ripple/associations/one_embedded_proxy.rb +35 -0
  37. data/lib/ripple/associations/one_key_proxy.rb +58 -0
  38. data/lib/ripple/associations/one_linked_proxy.rb +26 -0
  39. data/lib/ripple/associations/one_stored_key_proxy.rb +43 -0
  40. data/lib/ripple/associations/proxy.rb +118 -0
  41. data/lib/ripple/attribute_methods.rb +132 -0
  42. data/lib/ripple/attribute_methods/dirty.rb +59 -0
  43. data/lib/ripple/attribute_methods/query.rb +34 -0
  44. data/lib/ripple/attribute_methods/read.rb +28 -0
  45. data/lib/ripple/attribute_methods/write.rb +25 -0
  46. data/lib/ripple/callbacks.rb +71 -0
  47. data/lib/ripple/conflict/basic_resolver.rb +86 -0
  48. data/lib/ripple/conflict/document_hooks.rb +46 -0
  49. data/lib/ripple/conflict/resolver.rb +96 -0
  50. data/lib/ripple/conflict/test_helper.rb +34 -0
  51. data/lib/ripple/conversion.rb +29 -0
  52. data/lib/ripple/core_ext.rb +3 -0
  53. data/lib/ripple/core_ext/casting.rb +151 -0
  54. data/lib/ripple/core_ext/indexes.rb +89 -0
  55. data/lib/ripple/core_ext/object.rb +8 -0
  56. data/lib/ripple/document.rb +105 -0
  57. data/lib/ripple/document/bucket_access.rb +25 -0
  58. data/lib/ripple/document/finders.rb +131 -0
  59. data/lib/ripple/document/key.rb +35 -0
  60. data/lib/ripple/document/link.rb +30 -0
  61. data/lib/ripple/document/persistence.rb +130 -0
  62. data/lib/ripple/embedded_document.rb +63 -0
  63. data/lib/ripple/embedded_document/around_callbacks.rb +18 -0
  64. data/lib/ripple/embedded_document/finders.rb +26 -0
  65. data/lib/ripple/embedded_document/persistence.rb +75 -0
  66. data/lib/ripple/i18n.rb +5 -0
  67. data/lib/ripple/indexes.rb +151 -0
  68. data/lib/ripple/inspection.rb +32 -0
  69. data/lib/ripple/locale/en.yml +26 -0
  70. data/lib/ripple/locale/fr.yml +24 -0
  71. data/lib/ripple/nested_attributes.rb +275 -0
  72. data/lib/ripple/observable.rb +28 -0
  73. data/lib/ripple/properties.rb +74 -0
  74. data/lib/ripple/property_type_mismatch.rb +12 -0
  75. data/lib/ripple/railtie.rb +26 -0
  76. data/lib/ripple/railties/ripple.rake +68 -0
  77. data/lib/ripple/serialization.rb +82 -0
  78. data/lib/ripple/test_server.rb +35 -0
  79. data/lib/ripple/timestamps.rb +25 -0
  80. data/lib/ripple/translation.rb +18 -0
  81. data/lib/ripple/validations.rb +65 -0
  82. data/lib/ripple/validations/associated_validator.rb +43 -0
  83. data/lib/ripple/version.rb +3 -0
  84. data/ripple.gemspec +29 -0
  85. data/spec/fixtures/config.yml +8 -0
  86. data/spec/generators/ripple/configuration_generator_spec.rb +9 -0
  87. data/spec/generators/ripple/js_generator_spec.rb +14 -0
  88. data/spec/generators/ripple/model_generator_spec.rb +64 -0
  89. data/spec/generators/ripple/observer_generator_spec.rb +20 -0
  90. data/spec/generators/ripple/test_generator_spec.rb +118 -0
  91. data/spec/generators/ripple_generator_spec.rb +11 -0
  92. data/spec/integration/ripple/associations_spec.rb +164 -0
  93. data/spec/integration/ripple/conflict_resolution_spec.rb +329 -0
  94. data/spec/integration/ripple/indexes_spec.rb +47 -0
  95. data/spec/integration/ripple/nested_attributes_spec.rb +261 -0
  96. data/spec/integration/ripple/persistence_spec.rb +36 -0
  97. data/spec/integration/ripple/search_associations_spec.rb +31 -0
  98. data/spec/ripple/associations/many_embedded_proxy_spec.rb +119 -0
  99. data/spec/ripple/associations/many_linked_proxy_spec.rb +191 -0
  100. data/spec/ripple/associations/many_reference_proxy_spec.rb +170 -0
  101. data/spec/ripple/associations/many_stored_key_proxy_spec.rb +158 -0
  102. data/spec/ripple/associations/one_embedded_proxy_spec.rb +125 -0
  103. data/spec/ripple/associations/one_key_proxy_spec.rb +82 -0
  104. data/spec/ripple/associations/one_linked_proxy_spec.rb +91 -0
  105. data/spec/ripple/associations/one_stored_key_proxy_spec.rb +72 -0
  106. data/spec/ripple/associations/proxy_spec.rb +84 -0
  107. data/spec/ripple/associations_spec.rb +153 -0
  108. data/spec/ripple/attribute_methods/dirty_spec.rb +80 -0
  109. data/spec/ripple/attribute_methods_spec.rb +286 -0
  110. data/spec/ripple/bucket_access_spec.rb +25 -0
  111. data/spec/ripple/callbacks_spec.rb +195 -0
  112. data/spec/ripple/conflict/resolver_spec.rb +42 -0
  113. data/spec/ripple/conversion_spec.rb +14 -0
  114. data/spec/ripple/core_ext_spec.rb +181 -0
  115. data/spec/ripple/document/link_spec.rb +67 -0
  116. data/spec/ripple/document_spec.rb +96 -0
  117. data/spec/ripple/embedded_document/finders_spec.rb +29 -0
  118. data/spec/ripple/embedded_document/persistence_spec.rb +80 -0
  119. data/spec/ripple/embedded_document_spec.rb +84 -0
  120. data/spec/ripple/finders_spec.rb +220 -0
  121. data/spec/ripple/indexes_spec.rb +111 -0
  122. data/spec/ripple/inspection_spec.rb +51 -0
  123. data/spec/ripple/key_spec.rb +31 -0
  124. data/spec/ripple/observable_spec.rb +120 -0
  125. data/spec/ripple/persistence_spec.rb +351 -0
  126. data/spec/ripple/properties_spec.rb +262 -0
  127. data/spec/ripple/ripple_spec.rb +71 -0
  128. data/spec/ripple/serialization_spec.rb +51 -0
  129. data/spec/ripple/timestamps_spec.rb +83 -0
  130. data/spec/ripple/validations/associated_validator_spec.rb +77 -0
  131. data/spec/ripple/validations_spec.rb +102 -0
  132. data/spec/spec_helper.rb +39 -0
  133. data/spec/support/associations.rb +1 -0
  134. data/spec/support/associations/proxies.rb +17 -0
  135. data/spec/support/generator_setup.rb +26 -0
  136. data/spec/support/integration_setup.rb +11 -0
  137. data/spec/support/models.rb +35 -0
  138. data/spec/support/models/address.rb +10 -0
  139. data/spec/support/models/box.rb +13 -0
  140. data/spec/support/models/car.rb +41 -0
  141. data/spec/support/models/cardboard_box.rb +2 -0
  142. data/spec/support/models/clock.rb +10 -0
  143. data/spec/support/models/clock_observer.rb +2 -0
  144. data/spec/support/models/company.rb +23 -0
  145. data/spec/support/models/credit_card.rb +5 -0
  146. data/spec/support/models/customer.rb +3 -0
  147. data/spec/support/models/email.rb +3 -0
  148. data/spec/support/models/family.rb +16 -0
  149. data/spec/support/models/favorite.rb +3 -0
  150. data/spec/support/models/indexer.rb +26 -0
  151. data/spec/support/models/invoice.rb +6 -0
  152. data/spec/support/models/late_invoice.rb +2 -0
  153. data/spec/support/models/nested.rb +12 -0
  154. data/spec/support/models/ninja.rb +7 -0
  155. data/spec/support/models/note.rb +4 -0
  156. data/spec/support/models/page.rb +3 -0
  157. data/spec/support/models/paid_invoice.rb +3 -0
  158. data/spec/support/models/post.rb +13 -0
  159. data/spec/support/models/profile.rb +7 -0
  160. data/spec/support/models/subscription.rb +26 -0
  161. data/spec/support/models/tasks.rb +9 -0
  162. data/spec/support/models/team.rb +11 -0
  163. data/spec/support/models/transactions.rb +17 -0
  164. data/spec/support/models/tree.rb +3 -0
  165. data/spec/support/models/user.rb +19 -0
  166. data/spec/support/models/widget.rb +23 -0
  167. data/spec/support/search.rb +14 -0
  168. data/spec/support/test_server.rb +39 -0
  169. data/spec/support/test_server.yml.example +14 -0
  170. metadata +434 -0
@@ -0,0 +1,3 @@
1
+ class Email
2
+ include Ripple::Document
3
+ end
@@ -0,0 +1,16 @@
1
+ class Parent
2
+ include Ripple::Document
3
+ one :child
4
+ validates_associated :child
5
+ end
6
+
7
+ class Child
8
+ include Ripple::EmbeddedDocument
9
+ property :name, String, :presence => true
10
+ property :age, Integer, :presence => true
11
+ one :gchild, :class_name => 'Grandchild'
12
+ end
13
+
14
+ class Grandchild
15
+ include Ripple::EmbeddedDocument
16
+ end
@@ -0,0 +1,3 @@
1
+ class Favorite
2
+ include Ripple::EmbeddedDocument
3
+ end
@@ -0,0 +1,26 @@
1
+ class IndexedAddress
2
+ include Ripple::EmbeddedDocument
3
+ property :street, String, :index => true
4
+ property :city, String, :index => true
5
+ end
6
+
7
+ class Indexer
8
+ include Ripple::Document
9
+
10
+ property :name, String, :index => true
11
+ property :age, Fixnum, :index => true
12
+ one :primary_address, :class => IndexedAddress
13
+ many :addresses, :class => IndexedAddress
14
+ index :name_age, String do
15
+ "#{self.name}-#{self.age}"
16
+ end
17
+ index :name_greeting, String
18
+
19
+ def name_greeting
20
+ "#{name}: Hello!"
21
+ end
22
+ end
23
+
24
+ class SubIndexer < Indexer
25
+ property :height, String, :index => true
26
+ end
@@ -0,0 +1,6 @@
1
+ class Invoice
2
+ include Ripple::Document
3
+ one :customer
4
+ one :note
5
+ timestamps!
6
+ end
@@ -0,0 +1,2 @@
1
+ class LateInvoice < Invoice
2
+ end
@@ -0,0 +1,12 @@
1
+ module ::Nested
2
+ module Scope
3
+ class Parent
4
+ include Ripple::Document
5
+ end
6
+
7
+ class Child
8
+ include Ripple::EmbeddedDocument
9
+ embedded_in :parent
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ class Ninja < User
2
+ property :name, String
3
+
4
+ def key
5
+ "ninja-#{name.downcase}"
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ class Note
2
+ include Ripple::EmbeddedDocument
3
+ property :text, String
4
+ end
@@ -0,0 +1,3 @@
1
+ class Page
2
+ include Ripple::Document
3
+ end
@@ -0,0 +1,3 @@
1
+ class PaidInvoice < Invoice
2
+ self.bucket_name = "paid"
3
+ end
@@ -0,0 +1,13 @@
1
+ class Post
2
+ include Ripple::Document
3
+ property :comment_keys, Array
4
+ property :user_key, String
5
+ property :title, String
6
+
7
+ one :user, :using => :stored_key
8
+ many :comments, :using => :stored_key
9
+ end
10
+
11
+ class Comment
12
+ include Ripple::Document
13
+ end
@@ -0,0 +1,7 @@
1
+ class Profile
2
+ include Ripple::Document
3
+
4
+ one :user, :using => :key
5
+
6
+ property :color, String
7
+ end
@@ -0,0 +1,26 @@
1
+ class Subscription
2
+ include Ripple::Document
3
+
4
+ class MyCustomType
5
+ attr_accessor :foo
6
+
7
+ def initialize(foo)
8
+ self.foo = foo
9
+ end
10
+
11
+ def as_json(options = {})
12
+ foo
13
+ end
14
+
15
+ def self.ripple_cast(value)
16
+ new(value)
17
+ end
18
+
19
+ def ==(other)
20
+ other.foo == foo
21
+ end
22
+ end
23
+
24
+ property :days_of_month, Set
25
+ property :custom_data, MyCustomType
26
+ end
@@ -0,0 +1,9 @@
1
+ class Person
2
+ include Ripple::Document
3
+ many :tasks
4
+ one :profile
5
+ end
6
+
7
+ class Task
8
+ include Ripple::Document
9
+ end
@@ -0,0 +1,11 @@
1
+ class Team
2
+ include Ripple::Document
3
+ many :players
4
+ validates_associated :players
5
+ end
6
+
7
+ class Player
8
+ include Ripple::Document
9
+ property :name, String, :presence => true
10
+ property :position, String, :presence => true
11
+ end
@@ -0,0 +1,17 @@
1
+ class PaymentMethod
2
+ include Ripple::Document
3
+ property :account_key, String
4
+ end
5
+
6
+ class Account
7
+ include Ripple::Document
8
+ many :payment_methods, :using => :reference
9
+ property :transaction_keys, Array
10
+ many :transactions, :using => :stored_key
11
+ end
12
+
13
+ class Transaction
14
+ include Ripple::Document
15
+ property :account_key, String
16
+ one :account, :using => :stored_key
17
+ end
@@ -0,0 +1,3 @@
1
+ class Leaf; end;
2
+ class Branch; end;
3
+ class Trunk; end
@@ -0,0 +1,19 @@
1
+ class User
2
+ include Ripple::Document
3
+ many :addresses
4
+ one :primary_mailing_address, :class_name => "Address"
5
+
6
+ one :profile, :using => :key
7
+ one :user_profile
8
+
9
+ property :email, String, :presence => true
10
+ many :friends, :class_name => "User"
11
+ one :emergency_contact, :class_name => "User"
12
+ one :credit_card, :using => :key
13
+ end
14
+
15
+ class UserProfile
16
+ include Ripple::EmbeddedDocument
17
+ property :name, String, :presence => true
18
+ embedded_in :user
19
+ end
@@ -0,0 +1,23 @@
1
+ class Widget
2
+ include Ripple::Document
3
+ property :size, Integer
4
+ property :name, String, :default => "widget"
5
+ property :manufactured, Boolean, :default => false
6
+ property :shipped_at, Time
7
+ property :restricted, Boolean, :default => false
8
+
9
+ attr_protected :manufactured
10
+ attr_protected :restricted, :as => :default
11
+
12
+ many :widget_parts
13
+ end
14
+
15
+ class Cog < Widget
16
+ property :name, String, :default => "cog"
17
+ end
18
+
19
+ class WidgetPart
20
+ include Ripple::Document
21
+ property :name, String
22
+ key_on :name
23
+ end
@@ -0,0 +1,14 @@
1
+ require 'support/test_server'
2
+
3
+ class Riak::TestServer
4
+ # For now this is a local hack - later we'll make it global.
5
+ def riak_search?
6
+ control_script.basename.to_s == 'riaksearch' || (version >= "1.0.0" && env[:riak_search][:enabled])
7
+ end
8
+ end
9
+
10
+ RSpec.configure do |config|
11
+ config.before(:all, :search => true) do
12
+ pending("depends upon riak search, which is not available") unless test_server.riak_search?
13
+ end
14
+ end
@@ -0,0 +1,39 @@
1
+ require 'riak/test_server'
2
+
3
+ module TestServerSupport
4
+ def test_server
5
+ unless $test_server
6
+ begin
7
+ require 'yaml'
8
+ config = YAML.load_file(File.expand_path("../test_server.yml", __FILE__))
9
+ server = Riak::TestServer.create(:root => config['root'],
10
+ :source => config['source'],
11
+ :min_port => config['min_port'] || 15000)
12
+ $test_server = server
13
+ rescue => e
14
+ pending("Can't run ripple integration specs without the test server. Specify the location of your Riak installation in spec/support/test_server.yml\n#{e.inspect}")
15
+ end
16
+ end
17
+ $test_server
18
+ end
19
+ end
20
+
21
+ RSpec.configure do |config|
22
+ config.include TestServerSupport, :integration => true
23
+
24
+ config.before(:each, :integration => true) do
25
+ Ripple.config = {
26
+ :http_port => test_server.http_port,
27
+ :pb_port => test_server.pb_port
28
+ }
29
+ test_server.start
30
+ end
31
+
32
+ config.after(:each, :integration => true) do
33
+ test_server.drop
34
+ end
35
+
36
+ config.after(:suite) do
37
+ $test_server.stop if $test_server
38
+ end
39
+ end
@@ -0,0 +1,14 @@
1
+ # This is where the test server node will be generated. Something on
2
+ # /tmp is usually ok.
3
+ root: .ripplenode
4
+
5
+ # This is where Riak is installed on your system, that is, the path to
6
+ # the 'riak' and 'riak-admin' scripts. I use a self-built node, but
7
+ # here's where it will generally be on various platforms:
8
+ #
9
+ # Linux: /usr/sbin
10
+ # Solaris/OpenSolaris: /opt/riak/bin
11
+ # Mac OS/X (Homebrew): /usr/local/bin
12
+ # Source/Self built: /path/to/your/install/rel/riak/bin
13
+ #
14
+ source: /Users/sean/Development/riak/rel/riak/bin
metadata ADDED
@@ -0,0 +1,434 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wyngle-ripple
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Wyngle
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-02-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.8.0
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.8.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: ammeter
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.2.2
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.2.2
62
+ - !ruby/object:Gem::Dependency
63
+ name: riak-client
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: activesupport
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 3.0.0
86
+ - - <
87
+ - !ruby/object:Gem::Version
88
+ version: 3.3.0
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 3.0.0
97
+ - - <
98
+ - !ruby/object:Gem::Version
99
+ version: 3.3.0
100
+ - !ruby/object:Gem::Dependency
101
+ name: activemodel
102
+ requirement: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: 3.0.0
108
+ - - <
109
+ - !ruby/object:Gem::Version
110
+ version: 3.3.0
111
+ type: :runtime
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: 3.0.0
119
+ - - <
120
+ - !ruby/object:Gem::Version
121
+ version: 3.3.0
122
+ - !ruby/object:Gem::Dependency
123
+ name: tzinfo
124
+ requirement: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ description: ripple is an object-mapper library for Riak, the distributed database
139
+ by Basho. It uses ActiveModel to provide an experience that integrates well with
140
+ Rails 3 applications.
141
+ email:
142
+ - info@wynglecom
143
+ executables: []
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - ripple.gemspec
148
+ - Gemfile.lock
149
+ - wyngle-ripple-0.1.0.gem
150
+ - lib/ripple/i18n.rb
151
+ - lib/ripple/translation.rb
152
+ - lib/ripple/observable.rb
153
+ - lib/ripple/associations/proxy.rb
154
+ - lib/ripple/associations/instantiators.rb
155
+ - lib/ripple/associations/one_stored_key_proxy.rb
156
+ - lib/ripple/associations/one_key_proxy.rb
157
+ - lib/ripple/associations/one_linked_proxy.rb
158
+ - lib/ripple/associations/many_reference_proxy.rb
159
+ - lib/ripple/associations/many.rb
160
+ - lib/ripple/associations/embedded.rb
161
+ - lib/ripple/associations/one_embedded_proxy.rb
162
+ - lib/ripple/associations/linked.rb
163
+ - lib/ripple/associations/many_linked_proxy.rb
164
+ - lib/ripple/associations/many_stored_key_proxy.rb
165
+ - lib/ripple/associations/one.rb
166
+ - lib/ripple/associations/many_embedded_proxy.rb
167
+ - lib/ripple/conflict/test_helper.rb
168
+ - lib/ripple/conflict/resolver.rb
169
+ - lib/ripple/conflict/basic_resolver.rb
170
+ - lib/ripple/conflict/document_hooks.rb
171
+ - lib/ripple/core_ext.rb
172
+ - lib/ripple/document/bucket_access.rb
173
+ - lib/ripple/document/link.rb
174
+ - lib/ripple/document/persistence.rb
175
+ - lib/ripple/document/finders.rb
176
+ - lib/ripple/document/key.rb
177
+ - lib/ripple/inspection.rb
178
+ - lib/ripple/property_type_mismatch.rb
179
+ - lib/ripple/associations.rb
180
+ - lib/ripple/document.rb
181
+ - lib/ripple/nested_attributes.rb
182
+ - lib/ripple/conversion.rb
183
+ - lib/ripple/core_ext/indexes.rb
184
+ - lib/ripple/core_ext/casting.rb
185
+ - lib/ripple/core_ext/object.rb
186
+ - lib/ripple/embedded_document.rb
187
+ - lib/ripple/indexes.rb
188
+ - lib/ripple/validations/associated_validator.rb
189
+ - lib/ripple/timestamps.rb
190
+ - lib/ripple/callbacks.rb
191
+ - lib/ripple/attribute_methods/query.rb
192
+ - lib/ripple/attribute_methods/write.rb
193
+ - lib/ripple/attribute_methods/read.rb
194
+ - lib/ripple/attribute_methods/dirty.rb
195
+ - lib/ripple/validations.rb
196
+ - lib/ripple/embedded_document/persistence.rb
197
+ - lib/ripple/embedded_document/finders.rb
198
+ - lib/ripple/embedded_document/around_callbacks.rb
199
+ - lib/ripple/attribute_methods.rb
200
+ - lib/ripple/locale/en.yml
201
+ - lib/ripple/locale/fr.yml
202
+ - lib/ripple/test_server.rb
203
+ - lib/ripple/railtie.rb
204
+ - lib/ripple/railties/ripple.rake
205
+ - lib/ripple/serialization.rb
206
+ - lib/ripple/properties.rb
207
+ - lib/ripple/version.rb
208
+ - lib/rails/generators/ripple_generator.rb
209
+ - lib/rails/generators/ripple/js/templates/js/contrib.js
210
+ - lib/rails/generators/ripple/js/templates/js/iso8601.js
211
+ - lib/rails/generators/ripple/js/templates/js/ripple.js
212
+ - lib/rails/generators/ripple/js/js_generator.rb
213
+ - lib/rails/generators/ripple/configuration/templates/ripple.yml
214
+ - lib/rails/generators/ripple/configuration/configuration_generator.rb
215
+ - lib/rails/generators/ripple/observer/templates/observer.rb.erb
216
+ - lib/rails/generators/ripple/observer/observer_generator.rb
217
+ - lib/rails/generators/ripple/test/templates/cucumber.rb.erb
218
+ - lib/rails/generators/ripple/test/test_generator.rb
219
+ - lib/rails/generators/ripple/model/templates/model.rb.erb
220
+ - lib/rails/generators/ripple/model/model_generator.rb
221
+ - lib/ripple.rb
222
+ - Gemfile.rails30
223
+ - spec/spec_helper.rb
224
+ - spec/ripple/callbacks_spec.rb
225
+ - spec/ripple/associations/many_stored_key_proxy_spec.rb
226
+ - spec/ripple/associations/proxy_spec.rb
227
+ - spec/ripple/associations/one_linked_proxy_spec.rb
228
+ - spec/ripple/associations/one_embedded_proxy_spec.rb
229
+ - spec/ripple/associations/one_stored_key_proxy_spec.rb
230
+ - spec/ripple/associations/many_linked_proxy_spec.rb
231
+ - spec/ripple/associations/many_embedded_proxy_spec.rb
232
+ - spec/ripple/associations/one_key_proxy_spec.rb
233
+ - spec/ripple/associations/many_reference_proxy_spec.rb
234
+ - spec/ripple/conflict/resolver_spec.rb
235
+ - spec/ripple/timestamps_spec.rb
236
+ - spec/ripple/document/link_spec.rb
237
+ - spec/ripple/inspection_spec.rb
238
+ - spec/ripple/serialization_spec.rb
239
+ - spec/ripple/validations_spec.rb
240
+ - spec/ripple/validations/associated_validator_spec.rb
241
+ - spec/ripple/properties_spec.rb
242
+ - spec/ripple/observable_spec.rb
243
+ - spec/ripple/persistence_spec.rb
244
+ - spec/ripple/attribute_methods_spec.rb
245
+ - spec/ripple/ripple_spec.rb
246
+ - spec/ripple/key_spec.rb
247
+ - spec/ripple/attribute_methods/dirty_spec.rb
248
+ - spec/ripple/associations_spec.rb
249
+ - spec/ripple/document_spec.rb
250
+ - spec/ripple/embedded_document/persistence_spec.rb
251
+ - spec/ripple/embedded_document/finders_spec.rb
252
+ - spec/ripple/core_ext_spec.rb
253
+ - spec/ripple/conversion_spec.rb
254
+ - spec/ripple/indexes_spec.rb
255
+ - spec/ripple/finders_spec.rb
256
+ - spec/ripple/embedded_document_spec.rb
257
+ - spec/ripple/bucket_access_spec.rb
258
+ - spec/generators/ripple_generator_spec.rb
259
+ - spec/generators/ripple/configuration_generator_spec.rb
260
+ - spec/generators/ripple/test_generator_spec.rb
261
+ - spec/generators/ripple/js_generator_spec.rb
262
+ - spec/generators/ripple/observer_generator_spec.rb
263
+ - spec/generators/ripple/model_generator_spec.rb
264
+ - spec/support/integration_setup.rb
265
+ - spec/support/generator_setup.rb
266
+ - spec/support/associations/proxies.rb
267
+ - spec/support/associations.rb
268
+ - spec/support/models.rb
269
+ - spec/support/models/paid_invoice.rb
270
+ - spec/support/models/company.rb
271
+ - spec/support/models/family.rb
272
+ - spec/support/models/post.rb
273
+ - spec/support/models/nested.rb
274
+ - spec/support/models/email.rb
275
+ - spec/support/models/widget.rb
276
+ - spec/support/models/cardboard_box.rb
277
+ - spec/support/models/tasks.rb
278
+ - spec/support/models/tree.rb
279
+ - spec/support/models/customer.rb
280
+ - spec/support/models/invoice.rb
281
+ - spec/support/models/clock_observer.rb
282
+ - spec/support/models/profile.rb
283
+ - spec/support/models/credit_card.rb
284
+ - spec/support/models/transactions.rb
285
+ - spec/support/models/late_invoice.rb
286
+ - spec/support/models/subscription.rb
287
+ - spec/support/models/box.rb
288
+ - spec/support/models/team.rb
289
+ - spec/support/models/ninja.rb
290
+ - spec/support/models/address.rb
291
+ - spec/support/models/indexer.rb
292
+ - spec/support/models/page.rb
293
+ - spec/support/models/clock.rb
294
+ - spec/support/models/note.rb
295
+ - spec/support/models/favorite.rb
296
+ - spec/support/models/user.rb
297
+ - spec/support/models/car.rb
298
+ - spec/support/test_server.rb
299
+ - spec/support/search.rb
300
+ - spec/support/test_server.yml.example
301
+ - spec/fixtures/config.yml
302
+ - spec/integration/ripple/nested_attributes_spec.rb
303
+ - spec/integration/ripple/conflict_resolution_spec.rb
304
+ - spec/integration/ripple/search_associations_spec.rb
305
+ - spec/integration/ripple/persistence_spec.rb
306
+ - spec/integration/ripple/associations_spec.rb
307
+ - spec/integration/ripple/indexes_spec.rb
308
+ - Guardfile
309
+ - Gemfile
310
+ - Gemfile.rails31
311
+ - Gemfile.rails32
312
+ - Rakefile
313
+ - LICENSE
314
+ - RELEASE_NOTES.textile
315
+ - README.markdown
316
+ - .gitignore
317
+ homepage: http://www.wyngle.com
318
+ licenses: []
319
+ post_install_message:
320
+ rdoc_options: []
321
+ require_paths:
322
+ - lib
323
+ required_ruby_version: !ruby/object:Gem::Requirement
324
+ none: false
325
+ requirements:
326
+ - - ! '>='
327
+ - !ruby/object:Gem::Version
328
+ version: '0'
329
+ segments:
330
+ - 0
331
+ hash: -414826928238529786
332
+ required_rubygems_version: !ruby/object:Gem::Requirement
333
+ none: false
334
+ requirements:
335
+ - - ! '>='
336
+ - !ruby/object:Gem::Version
337
+ version: '0'
338
+ segments:
339
+ - 0
340
+ hash: -414826928238529786
341
+ requirements: []
342
+ rubyforge_project:
343
+ rubygems_version: 1.8.24
344
+ signing_key:
345
+ specification_version: 3
346
+ summary: ripple is an object-mapper library for Riak, the distributed database by
347
+ Basho.
348
+ test_files:
349
+ - spec/spec_helper.rb
350
+ - spec/ripple/callbacks_spec.rb
351
+ - spec/ripple/associations/many_stored_key_proxy_spec.rb
352
+ - spec/ripple/associations/proxy_spec.rb
353
+ - spec/ripple/associations/one_linked_proxy_spec.rb
354
+ - spec/ripple/associations/one_embedded_proxy_spec.rb
355
+ - spec/ripple/associations/one_stored_key_proxy_spec.rb
356
+ - spec/ripple/associations/many_linked_proxy_spec.rb
357
+ - spec/ripple/associations/many_embedded_proxy_spec.rb
358
+ - spec/ripple/associations/one_key_proxy_spec.rb
359
+ - spec/ripple/associations/many_reference_proxy_spec.rb
360
+ - spec/ripple/conflict/resolver_spec.rb
361
+ - spec/ripple/timestamps_spec.rb
362
+ - spec/ripple/document/link_spec.rb
363
+ - spec/ripple/inspection_spec.rb
364
+ - spec/ripple/serialization_spec.rb
365
+ - spec/ripple/validations_spec.rb
366
+ - spec/ripple/validations/associated_validator_spec.rb
367
+ - spec/ripple/properties_spec.rb
368
+ - spec/ripple/observable_spec.rb
369
+ - spec/ripple/persistence_spec.rb
370
+ - spec/ripple/attribute_methods_spec.rb
371
+ - spec/ripple/ripple_spec.rb
372
+ - spec/ripple/key_spec.rb
373
+ - spec/ripple/attribute_methods/dirty_spec.rb
374
+ - spec/ripple/associations_spec.rb
375
+ - spec/ripple/document_spec.rb
376
+ - spec/ripple/embedded_document/persistence_spec.rb
377
+ - spec/ripple/embedded_document/finders_spec.rb
378
+ - spec/ripple/core_ext_spec.rb
379
+ - spec/ripple/conversion_spec.rb
380
+ - spec/ripple/indexes_spec.rb
381
+ - spec/ripple/finders_spec.rb
382
+ - spec/ripple/embedded_document_spec.rb
383
+ - spec/ripple/bucket_access_spec.rb
384
+ - spec/generators/ripple_generator_spec.rb
385
+ - spec/generators/ripple/configuration_generator_spec.rb
386
+ - spec/generators/ripple/test_generator_spec.rb
387
+ - spec/generators/ripple/js_generator_spec.rb
388
+ - spec/generators/ripple/observer_generator_spec.rb
389
+ - spec/generators/ripple/model_generator_spec.rb
390
+ - spec/support/integration_setup.rb
391
+ - spec/support/generator_setup.rb
392
+ - spec/support/associations/proxies.rb
393
+ - spec/support/associations.rb
394
+ - spec/support/models.rb
395
+ - spec/support/models/paid_invoice.rb
396
+ - spec/support/models/company.rb
397
+ - spec/support/models/family.rb
398
+ - spec/support/models/post.rb
399
+ - spec/support/models/nested.rb
400
+ - spec/support/models/email.rb
401
+ - spec/support/models/widget.rb
402
+ - spec/support/models/cardboard_box.rb
403
+ - spec/support/models/tasks.rb
404
+ - spec/support/models/tree.rb
405
+ - spec/support/models/customer.rb
406
+ - spec/support/models/invoice.rb
407
+ - spec/support/models/clock_observer.rb
408
+ - spec/support/models/profile.rb
409
+ - spec/support/models/credit_card.rb
410
+ - spec/support/models/transactions.rb
411
+ - spec/support/models/late_invoice.rb
412
+ - spec/support/models/subscription.rb
413
+ - spec/support/models/box.rb
414
+ - spec/support/models/team.rb
415
+ - spec/support/models/ninja.rb
416
+ - spec/support/models/address.rb
417
+ - spec/support/models/indexer.rb
418
+ - spec/support/models/page.rb
419
+ - spec/support/models/clock.rb
420
+ - spec/support/models/note.rb
421
+ - spec/support/models/favorite.rb
422
+ - spec/support/models/user.rb
423
+ - spec/support/models/car.rb
424
+ - spec/support/test_server.rb
425
+ - spec/support/search.rb
426
+ - spec/support/test_server.yml.example
427
+ - spec/fixtures/config.yml
428
+ - spec/integration/ripple/nested_attributes_spec.rb
429
+ - spec/integration/ripple/conflict_resolution_spec.rb
430
+ - spec/integration/ripple/search_associations_spec.rb
431
+ - spec/integration/ripple/persistence_spec.rb
432
+ - spec/integration/ripple/associations_spec.rb
433
+ - spec/integration/ripple/indexes_spec.rb
434
+ - .gitignore