riak-record 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/Gemfile +2 -5
- data/Gemfile.lock +11 -0
- data/VERSION +1 -1
- data/lib/riak-record.rb +30 -9
- data/riak-record.gemspec +6 -3
- data/spec/riak-record_spec.rb +43 -12
- data/spec/spec_helper.rb +2 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85acfab0540c576334b9040c88a76e04c5a9d59f
|
4
|
+
data.tar.gz: db8d4bb1ad14f2b93866512641a7d13d13068f44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6abaf2c13290039a9d166fa0ac863259b9bb7a4b4235be3a59a339c25f478e956b61e7acf4117288d6748770231fb27e621e691a04161097d945c8118bb7b4e7
|
7
|
+
data.tar.gz: b3420c21d49b66f30ce5ff1a1d7fdc0c5e5232dcc35ebd3a933b1bbec2b01f0a07374d4dfe41e7677796506bbd448846fa89a020fe0577225dd876b3d253f91c
|
data/Gemfile
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
2
|
|
6
|
-
|
7
|
-
|
3
|
+
gem "riak-client", "~> 2.0.0"
|
4
|
+
|
8
5
|
group :development do
|
9
6
|
gem "rspec", "~> 3.1.0"
|
10
7
|
gem "rdoc", "~> 3.12"
|
data/Gemfile.lock
CHANGED
@@ -2,7 +2,9 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
addressable (2.3.6)
|
5
|
+
beefcake (1.0.0)
|
5
6
|
builder (3.2.2)
|
7
|
+
cert_validator (0.0.1)
|
6
8
|
descendants_tracker (0.0.4)
|
7
9
|
thread_safe (~> 0.3, >= 0.3.1)
|
8
10
|
diff-lcs (1.2.5)
|
@@ -20,6 +22,8 @@ GEM
|
|
20
22
|
oauth2
|
21
23
|
hashie (3.3.1)
|
22
24
|
highline (1.6.21)
|
25
|
+
i18n (0.6.11)
|
26
|
+
innertube (1.0.2)
|
23
27
|
jeweler (2.0.1)
|
24
28
|
builder
|
25
29
|
bundler (>= 1.0)
|
@@ -47,6 +51,12 @@ GEM
|
|
47
51
|
rake (10.3.2)
|
48
52
|
rdoc (3.12.2)
|
49
53
|
json (~> 1.4)
|
54
|
+
riak-client (2.0.0)
|
55
|
+
beefcake (~> 1.0)
|
56
|
+
cert_validator (~> 0.0.1)
|
57
|
+
i18n (>= 0.4.0)
|
58
|
+
innertube (~> 1.0.2)
|
59
|
+
multi_json (~> 1.0)
|
50
60
|
rspec (3.1.0)
|
51
61
|
rspec-core (~> 3.1.0)
|
52
62
|
rspec-expectations (~> 3.1.0)
|
@@ -73,5 +83,6 @@ DEPENDENCIES
|
|
73
83
|
bundler (~> 1.0)
|
74
84
|
jeweler (~> 2.0.1)
|
75
85
|
rdoc (~> 3.12)
|
86
|
+
riak-client (~> 2.0.0)
|
76
87
|
rspec (~> 3.1.0)
|
77
88
|
simplecov
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/lib/riak-record.rb
CHANGED
@@ -1,14 +1,22 @@
|
|
1
|
+
require 'riak'
|
2
|
+
|
1
3
|
class RiakRecord
|
2
4
|
attr_reader :riak_object
|
3
5
|
|
4
|
-
def initialize(
|
5
|
-
|
6
|
+
def initialize(r = nil)
|
7
|
+
r = self.class.bucket.new(r) if r.nil? || r.is_a?(String)
|
8
|
+
raise ArgumentError unless r.is_a? Riak::RObject
|
9
|
+
@riak_object = r
|
6
10
|
end
|
7
11
|
|
8
12
|
def data
|
9
13
|
riak_object.data
|
10
14
|
end
|
11
15
|
|
16
|
+
def save
|
17
|
+
riak_object.store
|
18
|
+
end
|
19
|
+
|
12
20
|
def self.bucket_name(name = :not_a_name)
|
13
21
|
@bucket_name = name unless name == :not_a_name
|
14
22
|
@bucket_name
|
@@ -20,22 +28,35 @@ class RiakRecord
|
|
20
28
|
|
21
29
|
def self.record_attributes(*attributes)
|
22
30
|
attributes.each do |method_name|
|
23
|
-
|
31
|
+
define_method(method_name) do
|
24
32
|
data[method_name]
|
25
33
|
end
|
34
|
+
|
35
|
+
define_method("#{method_name}=".to_sym) do |value|
|
36
|
+
data[method_name] = value
|
37
|
+
end
|
26
38
|
end
|
27
39
|
end
|
28
40
|
|
29
|
-
|
30
41
|
def self.find(key_or_keys)
|
31
|
-
if key_or_keys.is_a?(Array)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
42
|
+
return find_many(key_or_keys) if key_or_keys.is_a?(Array)
|
43
|
+
|
44
|
+
begin
|
45
|
+
self.new(bucket.get(key_or_keys.to_s))
|
46
|
+
rescue Riak::FailedRequest => e
|
47
|
+
if e.not_found?
|
48
|
+
nil
|
49
|
+
else
|
50
|
+
raise e
|
51
|
+
end
|
36
52
|
end
|
37
53
|
end
|
38
54
|
|
55
|
+
def self.find_many(keys)
|
56
|
+
hash = bucket.get_many(keys.map(&:to_s))
|
57
|
+
keys.map{ |k| hash[k] }
|
58
|
+
end
|
59
|
+
|
39
60
|
def self.client=(client)
|
40
61
|
@@client = client
|
41
62
|
end
|
data/riak-record.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: riak-record 0.0.
|
5
|
+
# stub: riak-record 0.0.3 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "riak-record"
|
9
|
-
s.version = "0.0.
|
9
|
+
s.version = "0.0.3"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Robert Graff"]
|
14
|
-
s.date = "2014-09-
|
14
|
+
s.date = "2014-09-18"
|
15
15
|
s.description = "RiakRecord is a thin and immature wrapper around riak-ruby-client. It creates a bucket for\n each class, provides a simple finder, and creates attribute reader."
|
16
16
|
s.email = "robert_graff@yahoo.com"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -41,12 +41,14 @@ Gem::Specification.new do |s|
|
|
41
41
|
s.specification_version = 4
|
42
42
|
|
43
43
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
44
|
+
s.add_runtime_dependency(%q<riak-client>, ["~> 2.0.0"])
|
44
45
|
s.add_development_dependency(%q<rspec>, ["~> 3.1.0"])
|
45
46
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
46
47
|
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
47
48
|
s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
|
48
49
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
49
50
|
else
|
51
|
+
s.add_dependency(%q<riak-client>, ["~> 2.0.0"])
|
50
52
|
s.add_dependency(%q<rspec>, ["~> 3.1.0"])
|
51
53
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
52
54
|
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
@@ -54,6 +56,7 @@ Gem::Specification.new do |s|
|
|
54
56
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
55
57
|
end
|
56
58
|
else
|
59
|
+
s.add_dependency(%q<riak-client>, ["~> 2.0.0"])
|
57
60
|
s.add_dependency(%q<rspec>, ["~> 3.1.0"])
|
58
61
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
59
62
|
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
data/spec/riak-record_spec.rb
CHANGED
@@ -1,11 +1,5 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
|
4
|
-
class ExampleClient
|
5
|
-
end
|
6
|
-
|
7
|
-
RiakRecord.client = ExampleClient.new
|
8
|
-
|
9
3
|
class ExampleA < RiakRecord
|
10
4
|
bucket_name 'example_a'
|
11
5
|
record_attributes :attribute1, :attribute2
|
@@ -26,6 +20,33 @@ describe "RiakRecord" do
|
|
26
20
|
expect(ExampleA.client).to eq(ExampleB.client)
|
27
21
|
end
|
28
22
|
|
23
|
+
describe "new" do
|
24
|
+
context "when passed in an RObject" do
|
25
|
+
let(:robject) { Riak::RObject.new("a-key") }
|
26
|
+
let(:record) { ExampleA.new(robject) }
|
27
|
+
it "should wrap it" do
|
28
|
+
expect(record.riak_object).to eq(robject)
|
29
|
+
expect(record).to be_a(ExampleA)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
context "when passed in a string" do
|
33
|
+
let(:key) { 'judy' }
|
34
|
+
let(:record) { ExampleA.new(key) }
|
35
|
+
it "should create an RObject with that id" do
|
36
|
+
expect(record).to be_a(ExampleA)
|
37
|
+
expect(record.riak_object).to be_a(Riak::RObject)
|
38
|
+
expect(record.riak_object.key).to eq(key)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
context "when passed in nil" do
|
42
|
+
let(:record) { ExampleA.new() }
|
43
|
+
it "should create an RObject with no id" do
|
44
|
+
expect(record).to be_a(ExampleA)
|
45
|
+
expect(record.riak_object).to be_a(Riak::RObject)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
29
50
|
describe "find" do
|
30
51
|
let(:bucket){ double }
|
31
52
|
let(:array){ Array.new }
|
@@ -39,26 +60,36 @@ describe "RiakRecord" do
|
|
39
60
|
end
|
40
61
|
|
41
62
|
it "should take a string and return nil if not found" do
|
42
|
-
|
63
|
+
e = Riak::FailedRequest.new("not found")
|
64
|
+
allow(e).to receive(:not_found?).and_return(true)
|
65
|
+
allow(bucket).to receive(:get).with("a-key").and_raise(e)
|
43
66
|
expect( ExampleA.find("a-key") ).to be_nil
|
44
67
|
end
|
45
68
|
|
46
69
|
it "should take a string and return an instance of Example" do
|
47
|
-
allow(bucket).to receive(:get).with("a-key").and_return(
|
70
|
+
allow(bucket).to receive(:get).with("a-key").and_return(Riak::RObject.new("a-key"))
|
48
71
|
expect( ExampleA.find("a-key") ).to be_an_instance_of(ExampleA)
|
49
72
|
end
|
50
73
|
end
|
51
74
|
|
52
75
|
describe "record_attributes" do
|
53
|
-
let(:riak_object) {
|
76
|
+
let(:riak_object) { Riak::RObject.new("obj").tap{|r| r.data = data } }
|
54
77
|
let(:data) { {:attribute1 => "1"} }
|
55
|
-
|
56
|
-
|
57
|
-
expect
|
78
|
+
let(:record) { ExampleA.new(riak_object) }
|
79
|
+
it "should read and write each attribute" do
|
80
|
+
expect{
|
81
|
+
record.attribute1=('b')
|
82
|
+
}.to change{record.attribute1}.from("1").to('b')
|
83
|
+
|
84
|
+
expect{
|
85
|
+
record.attribute2 = 'c'
|
86
|
+
}.to change{record.attribute2}.from(nil).to('c')
|
87
|
+
|
58
88
|
end
|
59
89
|
|
60
90
|
it "should return attribute from riak_object data" do
|
61
91
|
expect( ExampleA.new(riak_object).attribute1 ).to eq("1")
|
62
92
|
end
|
93
|
+
|
63
94
|
end
|
64
95
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -20,6 +20,8 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
20
20
|
require 'rspec'
|
21
21
|
require 'riak-record'
|
22
22
|
|
23
|
+
RiakRecord.client = Riak::Client.new(:host => 'localhost', :pb_port => '8087')
|
24
|
+
|
23
25
|
# Requires supporting files with custom matchers and macros, etc,
|
24
26
|
# in ./support/ and its subdirectories.
|
25
27
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riak-record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Graff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: riak-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.0.0
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rspec
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|