ripple 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONTRIBUTORS.textile +4 -0
- data/RELEASE_NOTES.textile +12 -1
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/riak/bucket.rb +2 -2
- data/lib/riak/link.rb +11 -2
- data/lib/riak/map_reduce.rb +1 -1
- data/lib/ripple/document.rb +1 -1
- data/lib/ripple/document/persistence.rb +1 -1
- data/lib/ripple/embedded_document.rb +3 -3
- data/ripple.gemspec +9 -8
- data/spec/riak/link_spec.rb +19 -1
- data/spec/ripple/attribute_methods_spec.rb +6 -4
- data/spec/ripple/bucket_access_spec.rb +5 -3
- data/spec/ripple/callbacks_spec.rb +2 -2
- data/spec/ripple/document_spec.rb +1 -1
- data/spec/ripple/embedded_document_spec.rb +1 -1
- data/spec/ripple/finders_spec.rb +6 -4
- data/spec/ripple/persistence_spec.rb +11 -6
- data/spec/ripple/properties_spec.rb +6 -2
- data/spec/ripple/validations_spec.rb +7 -5
- metadata +5 -4
data/RELEASE_NOTES.textile
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
h1. Ripple Release Notes
|
2
2
|
|
3
|
+
h2. 0.5.1 Patch Release - 2010-02-22
|
4
|
+
|
5
|
+
This is a minor release with fixes for Ruby 1.9, bundler/edge Rails,
|
6
|
+
and a minor feature addition. Changes:
|
7
|
+
|
8
|
+
* Qualify namespaces for Ruby 1.9.
|
9
|
+
* Decoupled a few specs that gave the appearance of failure.
|
10
|
+
* Added "bucket" and "key" properties on Riak::Link objects. [John Lynch]
|
11
|
+
* Fully-qualify the @JSON@ constant, using @ActiveSupport::JSON@ instead.
|
12
|
+
* Adjusted gem specification to accommodate edge Rails. [Preston Marshall]
|
13
|
+
|
3
14
|
h2. 0.5 Initial Release - 2010-02-10
|
4
15
|
|
5
16
|
This is the first release of Ripple, which would not have been possible
|
@@ -21,4 +32,4 @@ It includes:
|
|
21
32
|
** Validations
|
22
33
|
** Dirty-tracking
|
23
34
|
** Simple finders - all documents, by key
|
24
|
-
** Reloading
|
35
|
+
** Reloading
|
data/Rakefile
CHANGED
@@ -16,8 +16,8 @@ begin
|
|
16
16
|
gem.add_development_dependency "rack", ">=1.0"
|
17
17
|
gem.add_development_dependency "yard", ">=0.5.2"
|
18
18
|
gem.add_development_dependency "curb", ">=0.6"
|
19
|
-
gem.add_dependency "activesupport", "3.0.0.beta"
|
20
|
-
gem.add_dependency "activemodel", "3.0.0.beta"
|
19
|
+
gem.add_dependency "activesupport", "~>3.0.0.beta"
|
20
|
+
gem.add_dependency "activemodel", "~>3.0.0.beta"
|
21
21
|
gem.requirements << "`gem install curb` for better HTTP performance"
|
22
22
|
end
|
23
23
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.1
|
data/lib/riak/bucket.rb
CHANGED
@@ -46,7 +46,7 @@ module Riak
|
|
46
46
|
unless response.try(:[], :headers).try(:[],'content-type').try(:first) =~ /json$/
|
47
47
|
raise Riak::InvalidResponse.new({"content-type" => ["application/json"]}, response[:headers], t("loading_bucket", :name => name))
|
48
48
|
end
|
49
|
-
payload = JSON.
|
49
|
+
payload = ActiveSupport::JSON.decode(response[:body])
|
50
50
|
@keys = payload['keys'].map {|k| URI.unescape(k) } if payload['keys']
|
51
51
|
@props = payload['props'] if payload['props']
|
52
52
|
self
|
@@ -63,7 +63,7 @@ module Riak
|
|
63
63
|
def keys(options={})
|
64
64
|
if block_given?
|
65
65
|
@client.http.get(200, @client.prefix, name, {:props => false}, {}) do |chunk|
|
66
|
-
obj = JSON.
|
66
|
+
obj = ActiveSupport::JSON.decode(chunk) rescue {}
|
67
67
|
yield obj['keys'].map {|k| URI.unescape(k) } if obj['keys']
|
68
68
|
end
|
69
69
|
elsif @keys.nil? || options[:reload]
|
data/lib/riak/link.rb
CHANGED
@@ -35,6 +35,16 @@ module Riak
|
|
35
35
|
@url, @rel = url, rel
|
36
36
|
end
|
37
37
|
|
38
|
+
# @return [String] bucket_name, if the Link url is a known Riak link ("/raw/<bucket>/<key>")
|
39
|
+
def bucket
|
40
|
+
$1 if url =~ %r{/raw/([^/]+)/?}
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [String] key, if the Link url is a known Riak link ("/raw/<bucket>/<key>")
|
44
|
+
def key
|
45
|
+
$1 if url =~ %r{/raw/[^/]+/([^/]+)/?}
|
46
|
+
end
|
47
|
+
|
38
48
|
def inspect; to_s; end
|
39
49
|
|
40
50
|
def to_s
|
@@ -46,8 +56,7 @@ module Riak
|
|
46
56
|
end
|
47
57
|
|
48
58
|
def to_walk_spec
|
49
|
-
|
50
|
-
raise t("bucket_link_conversion") if @rel == "up" || object.nil?
|
59
|
+
raise t("bucket_link_conversion") if @rel == "up" || key.nil?
|
51
60
|
WalkSpec.new(:bucket => bucket, :tag => @rel)
|
52
61
|
end
|
53
62
|
end
|
data/lib/riak/map_reduce.rb
CHANGED
@@ -135,7 +135,7 @@ module Riak
|
|
135
135
|
def run
|
136
136
|
response = @client.http.post(200, @client.mapred, to_json, {"Content-Type" => "application/json", "Accept" => "application/json"})
|
137
137
|
if response.try(:[], :headers).try(:[],'content-type').include?("application/json")
|
138
|
-
JSON.
|
138
|
+
ActiveSupport::JSON.decode(response[:body])
|
139
139
|
else
|
140
140
|
response
|
141
141
|
end
|
data/lib/ripple/document.rb
CHANGED
@@ -23,10 +23,10 @@ module Ripple
|
|
23
23
|
|
24
24
|
included do
|
25
25
|
extend ActiveModel::Naming
|
26
|
-
extend Document::Properties
|
26
|
+
extend Ripple::Document::Properties
|
27
27
|
include Persistence
|
28
|
-
include Document::AttributeMethods
|
29
|
-
include Document::Validations
|
28
|
+
include Ripple::Document::AttributeMethods
|
29
|
+
include Ripple::Document::Validations
|
30
30
|
end
|
31
31
|
|
32
32
|
module ClassMethods
|
data/ripple.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ripple}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Sean Cribbs"]
|
12
|
-
s.date = %q{2010-02-
|
12
|
+
s.date = %q{2010-02-22}
|
13
13
|
s.description = %q{ripple is a rich Ruby client for Riak, Basho's distributed database. It includes all the basics of accessing and manipulating Riak buckets and objects, and an object mapper library for building a rich domain on top of Riak.}
|
14
14
|
s.email = %q{seancribbs@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".gitignore",
|
22
|
+
"CONTRIBUTORS.textile",
|
22
23
|
"LICENSE",
|
23
24
|
"README.textile",
|
24
25
|
"RELEASE_NOTES.textile",
|
@@ -135,16 +136,16 @@ Gem::Specification.new do |s|
|
|
135
136
|
s.add_development_dependency(%q<rack>, [">= 1.0"])
|
136
137
|
s.add_development_dependency(%q<yard>, [">= 0.5.2"])
|
137
138
|
s.add_development_dependency(%q<curb>, [">= 0.6"])
|
138
|
-
s.add_runtime_dependency(%q<activesupport>, ["
|
139
|
-
s.add_runtime_dependency(%q<activemodel>, ["
|
139
|
+
s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0.beta"])
|
140
|
+
s.add_runtime_dependency(%q<activemodel>, ["~> 3.0.0.beta"])
|
140
141
|
else
|
141
142
|
s.add_dependency(%q<rspec>, [">= 1.3"])
|
142
143
|
s.add_dependency(%q<fakeweb>, [">= 1.2"])
|
143
144
|
s.add_dependency(%q<rack>, [">= 1.0"])
|
144
145
|
s.add_dependency(%q<yard>, [">= 0.5.2"])
|
145
146
|
s.add_dependency(%q<curb>, [">= 0.6"])
|
146
|
-
s.add_dependency(%q<activesupport>, ["
|
147
|
-
s.add_dependency(%q<activemodel>, ["
|
147
|
+
s.add_dependency(%q<activesupport>, ["~> 3.0.0.beta"])
|
148
|
+
s.add_dependency(%q<activemodel>, ["~> 3.0.0.beta"])
|
148
149
|
end
|
149
150
|
else
|
150
151
|
s.add_dependency(%q<rspec>, [">= 1.3"])
|
@@ -152,8 +153,8 @@ Gem::Specification.new do |s|
|
|
152
153
|
s.add_dependency(%q<rack>, [">= 1.0"])
|
153
154
|
s.add_dependency(%q<yard>, [">= 0.5.2"])
|
154
155
|
s.add_dependency(%q<curb>, [">= 0.6"])
|
155
|
-
s.add_dependency(%q<activesupport>, ["
|
156
|
-
s.add_dependency(%q<activemodel>, ["
|
156
|
+
s.add_dependency(%q<activesupport>, ["~> 3.0.0.beta"])
|
157
|
+
s.add_dependency(%q<activemodel>, ["~> 3.0.0.beta"])
|
157
158
|
end
|
158
159
|
end
|
159
160
|
|
data/spec/riak/link_spec.rb
CHANGED
@@ -21,13 +21,31 @@ describe Riak::Link do
|
|
21
21
|
result.should be_all {|i| Riak::Link === i }
|
22
22
|
end
|
23
23
|
|
24
|
-
it "should set the url and rel parameters properly" do
|
24
|
+
it "should set the bucket, key, url and rel parameters properly" do
|
25
25
|
result = Riak::Link.parse('</raw/foo/bar>; riaktag="tag", </raw/foo>; rel="up"')
|
26
26
|
result[0].url.should == "/raw/foo/bar"
|
27
|
+
result[0].bucket.should == "foo"
|
28
|
+
result[0].key.should == "bar"
|
27
29
|
result[0].rel.should == "tag"
|
28
30
|
result[1].url.should == "/raw/foo"
|
31
|
+
result[1].bucket.should == "foo"
|
32
|
+
result[1].key.should == nil
|
29
33
|
result[1].rel.should == "up"
|
30
34
|
end
|
35
|
+
|
36
|
+
it "should set url properly, and set bucket and key to nil for non-Riak links" do
|
37
|
+
result = Riak::Link.parse('<http://www.example.com/123.html>; riaktag="tag", </raw/foo>; rel="up"')
|
38
|
+
result[0].url.should == "http://www.example.com/123.html"
|
39
|
+
result[0].bucket.should == nil
|
40
|
+
result[0].key.should == nil
|
41
|
+
result[0].rel.should == "tag"
|
42
|
+
|
43
|
+
result = Riak::Link.parse('<http://www.example.com/>; riaktag="tag", </raw/foo>; rel="up"')
|
44
|
+
result[0].url.should == "http://www.example.com/"
|
45
|
+
result[0].bucket.should == nil
|
46
|
+
result[0].key.should == nil
|
47
|
+
result[0].rel.should == "tag"
|
48
|
+
end
|
31
49
|
end
|
32
50
|
|
33
51
|
it "should convert to a string appropriate for use in the Link header" do
|
@@ -15,10 +15,12 @@ require File.expand_path("../../spec_helper", __FILE__)
|
|
15
15
|
|
16
16
|
describe Ripple::Document::AttributeMethods do
|
17
17
|
before :all do
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
Object.module_eval do
|
19
|
+
class Widget
|
20
|
+
include Ripple::Document
|
21
|
+
property :size, Integer
|
22
|
+
property :name, String, :default => "widget"
|
23
|
+
end
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
@@ -15,9 +15,11 @@ require File.expand_path("../spec_helper", File.dirname(__FILE__))
|
|
15
15
|
|
16
16
|
describe Ripple::Document::BucketAccess do
|
17
17
|
before :all do
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
Object.module_eval do
|
19
|
+
class Invoice; include Ripple::Document; end
|
20
|
+
class LateInvoice < Invoice; end
|
21
|
+
class PaidInvoice < Invoice; self.bucket_name = "paid"; end
|
22
|
+
end
|
21
23
|
end
|
22
24
|
|
23
25
|
it "should use the plural model name as the bucket name" do
|
@@ -15,12 +15,12 @@ require File.expand_path("../../spec_helper", __FILE__)
|
|
15
15
|
|
16
16
|
describe Ripple::Document::Persistence::Callbacks do
|
17
17
|
before :all do
|
18
|
-
class Box; include Ripple::Document; property :shape, String end
|
18
|
+
Object.module_eval { class Box; include Ripple::Document; property :shape, String end }
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should add create, update, save, and destroy callback declarations" do
|
22
22
|
[:save, :create, :update, :destroy].each do |event|
|
23
|
-
Box.private_instance_methods.should include("_run_#{event}_callbacks")
|
23
|
+
Box.private_instance_methods.map(&:to_s).should include("_run_#{event}_callbacks")
|
24
24
|
[:before, :after, :around].each do |time|
|
25
25
|
Box.should respond_to("#{time}_#{event}")
|
26
26
|
end
|
@@ -15,7 +15,7 @@ require File.expand_path("../spec_helper", File.dirname(__FILE__))
|
|
15
15
|
|
16
16
|
describe Ripple::Document do
|
17
17
|
before :all do
|
18
|
-
class Page; include Ripple::Document; end
|
18
|
+
Object.module_eval { class Page; include Ripple::Document; end }
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should add bucket access methods to classes when included" do
|
@@ -15,7 +15,7 @@ require File.expand_path("../../spec_helper", __FILE__)
|
|
15
15
|
|
16
16
|
describe Ripple::EmbeddedDocument do
|
17
17
|
before :all do
|
18
|
-
class Address; include Ripple::EmbeddedDocument; end
|
18
|
+
Object.module_eval { class Address; include Ripple::EmbeddedDocument; end }
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should have a model name when included" do
|
data/spec/ripple/finders_spec.rb
CHANGED
@@ -15,9 +15,11 @@ require File.expand_path("../../spec_helper", __FILE__)
|
|
15
15
|
|
16
16
|
describe Ripple::Document::Finders do
|
17
17
|
before :all do
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
Object.module_eval do
|
19
|
+
class Box
|
20
|
+
include Ripple::Document
|
21
|
+
property :shape, String
|
22
|
+
end
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -123,7 +125,7 @@ describe Ripple::Document::Finders do
|
|
123
125
|
|
124
126
|
describe "single-bucket inheritance" do
|
125
127
|
before :all do
|
126
|
-
class CardboardBox < Box; end
|
128
|
+
Object.module_eval { class CardboardBox < Box; end }
|
127
129
|
end
|
128
130
|
|
129
131
|
it "should instantiate as the proper type if defined in the document" do
|
@@ -15,11 +15,13 @@ require File.expand_path("../../spec_helper", __FILE__)
|
|
15
15
|
|
16
16
|
describe Ripple::Document::Persistence do
|
17
17
|
before :all do
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
Object.module_eval {
|
19
|
+
class Widget
|
20
|
+
include Ripple::Document
|
21
|
+
property :size, Integer
|
22
|
+
property :name, String, :default => "widget"
|
23
|
+
end
|
24
|
+
}
|
23
25
|
end
|
24
26
|
|
25
27
|
before :each do
|
@@ -67,7 +69,10 @@ describe Ripple::Document::Persistence do
|
|
67
69
|
|
68
70
|
describe "when storing a class using single-bucket inheritance" do
|
69
71
|
before :all do
|
70
|
-
class Cog < Widget; property :name, String, :default => "cog"; end
|
72
|
+
Object.module_eval { class Cog < Widget; property :name, String, :default => "cog"; end }
|
73
|
+
end
|
74
|
+
|
75
|
+
before :each do
|
71
76
|
@cog = Cog.new(:size => 1000)
|
72
77
|
end
|
73
78
|
|
@@ -15,7 +15,7 @@ require File.expand_path("../../spec_helper", __FILE__)
|
|
15
15
|
|
16
16
|
describe Ripple::Document::Properties do
|
17
17
|
before :all do
|
18
|
-
class Email; include Ripple::Document; end
|
18
|
+
Object.module_eval { class Email; include Ripple::Document; end }
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should make the model class have a property definition method" do
|
@@ -122,7 +122,11 @@ describe Ripple::Document::Property do
|
|
122
122
|
@prop.type_cast("s").should == "s"
|
123
123
|
@prop.type_cast(1).should == "1"
|
124
124
|
@prop.type_cast(true).should == "true"
|
125
|
-
|
125
|
+
if RUBY_VERSION < "1.9"
|
126
|
+
@prop.type_cast([]).should == ""
|
127
|
+
else
|
128
|
+
@prop.type_cast([]).should == "[]"
|
129
|
+
end
|
126
130
|
end
|
127
131
|
end
|
128
132
|
|
@@ -15,7 +15,7 @@ require File.expand_path("../../spec_helper", __FILE__)
|
|
15
15
|
|
16
16
|
describe Ripple::Document::Validations do
|
17
17
|
before :all do
|
18
|
-
class Box; include Ripple::Document; property :shape, String end
|
18
|
+
Object.module_eval { class Box; include Ripple::Document; property :shape, String end }
|
19
19
|
end
|
20
20
|
|
21
21
|
before :each do
|
@@ -50,14 +50,16 @@ describe Ripple::Document::Validations do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should run validations at the correct lifecycle state" do
|
53
|
-
|
54
|
-
Box.property :size, Integer
|
55
|
-
Box.validates_inclusion_of :size, :in => 1..30, :on => :update
|
53
|
+
Box.property :size, Integer, :inclusion => {:in => 1..30, :on => :update }
|
56
54
|
@box.size = 0
|
57
55
|
@box.should be_valid
|
58
56
|
Box.properties.delete :size
|
59
57
|
end
|
60
|
-
|
58
|
+
|
59
|
+
after :each do
|
60
|
+
Box.reset_callbacks(:validate)
|
61
|
+
end
|
62
|
+
|
61
63
|
after :all do
|
62
64
|
Object.send(:remove_const, :Box)
|
63
65
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ripple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Cribbs
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-22 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -68,7 +68,7 @@ dependencies:
|
|
68
68
|
version_requirement:
|
69
69
|
version_requirements: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
|
-
- -
|
71
|
+
- - ~>
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: 3.0.0.beta
|
74
74
|
version:
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
version_requirement:
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - ~>
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: 3.0.0.beta
|
84
84
|
version:
|
@@ -94,6 +94,7 @@ extra_rdoc_files:
|
|
94
94
|
files:
|
95
95
|
- .document
|
96
96
|
- .gitignore
|
97
|
+
- CONTRIBUTORS.textile
|
97
98
|
- LICENSE
|
98
99
|
- README.textile
|
99
100
|
- RELEASE_NOTES.textile
|