riak-record 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -3
- data/TODO.md +0 -2
- data/VERSION +1 -1
- data/lib/riak_record/base.rb +32 -6
- data/lib/riak_record/finder.rb +5 -1
- data/riak-record.gemspec +3 -3
- data/spec/riak_record/base_spec.rb +31 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 323433e9c9fb5acd1f53b15aebadb059e8cd2302
|
4
|
+
data.tar.gz: f085f0f28796d53fb8e9146ab799ac54b55c86b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2fa5ac5afafbd7e089ab4d04ae8c7a1e4b7862cde0312b738aaca34b12a328904192adef314b7873754813d117e1ab9fffda3e4e5d77ed734204f34e48bcb147
|
7
|
+
data.tar.gz: 9ff0f2298cfd033786ee6f5b42fb8dc5a16224d6882b1339d13e54827cecefaf80eb6a5e62651b69a820c04e5b6df4a4aab86f3bfbfabbeb1dd9df1360af556d
|
data/README.md
CHANGED
@@ -1,14 +1,18 @@
|
|
1
|
-
#
|
1
|
+
# RiakRecord
|
2
2
|
|
3
3
|
RiakRecord is a thin and immature wrapper around riak-ruby-client. It creates a bucket for
|
4
|
-
each class, provides a simple finder, and creates attribute
|
4
|
+
each class, provides a simple finder, and creates attribute accessors for data and indexes. It adds a layer over
|
5
5
|
the Riak::Client to make interacting with Riak more ActiveRecord-like while
|
6
6
|
still giving you all the access to Riak's underlying client's capabilities.
|
7
7
|
|
8
|
+
RiakRecord is is very similar to [Basho's Ripple](https://github.com/basho-labs/ripple) which is more feature rich
|
9
|
+
but also abandoned. For the [same reasons](http://basho.com/tag/ripple-client-apis/)
|
10
|
+
that Basho abandoned Ripple, you should think twice before using RiakRecord.
|
11
|
+
|
8
12
|
## Usage
|
9
13
|
|
10
14
|
```ruby
|
11
|
-
require '
|
15
|
+
require 'riak_record'
|
12
16
|
|
13
17
|
RiakRecord::Base.client = Riak::Client.new
|
14
18
|
RiakRecord::Base.namespace = 'staging' # optional. Namespaces buckets
|
data/TODO.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/riak_record/base.rb
CHANGED
@@ -10,13 +10,21 @@ module RiakRecord
|
|
10
10
|
alias :belongs_to :belongs_to_riak
|
11
11
|
end
|
12
12
|
|
13
|
-
def initialize(
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
def initialize(options = nil)
|
14
|
+
if options.is_a?(Riak::RObject)
|
15
|
+
@riak_object = options
|
16
|
+
else
|
17
|
+
@riak_object = self.class.bucket.new
|
18
|
+
@riak_object.content_type = 'application/json'
|
19
|
+
@riak_object.data = {}
|
20
|
+
if options.is_a?(Hash)
|
21
|
+
id = options.delete(:id) || options.delete(:key)
|
22
|
+
@riak_object.key = id.to_s if id
|
23
|
+
options.each_pair{ |k,v| self.send("#{k}=".to_sym, v) }
|
24
|
+
elsif !options.nil?
|
25
|
+
@riak_object.key = options.to_s
|
26
|
+
end
|
18
27
|
end
|
19
|
-
@riak_object = r
|
20
28
|
end
|
21
29
|
|
22
30
|
def data
|
@@ -39,6 +47,19 @@ module RiakRecord
|
|
39
47
|
@_stored = true
|
40
48
|
self
|
41
49
|
end
|
50
|
+
alias :save! :save
|
51
|
+
|
52
|
+
def self.create(*args)
|
53
|
+
self.new(*args).save
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.create!(*args)
|
57
|
+
self.new(*args).save
|
58
|
+
end
|
59
|
+
|
60
|
+
def delete
|
61
|
+
riak_object.delete
|
62
|
+
end
|
42
63
|
|
43
64
|
def new_record?
|
44
65
|
!(@_stored || riak_object.vclock)
|
@@ -48,6 +69,11 @@ module RiakRecord
|
|
48
69
|
riak_object.key
|
49
70
|
end
|
50
71
|
|
72
|
+
def ==(record)
|
73
|
+
return false unless record.kind_of?(RiakRecord::Base)
|
74
|
+
self.class.bucket_name == record.class.bucket_name && id == record.id
|
75
|
+
end
|
76
|
+
|
51
77
|
def reload
|
52
78
|
@riak_object = self.class.bucket.get(id)
|
53
79
|
@riak_object.data = {} if @riak_object.data.nil?
|
data/lib/riak_record/finder.rb
CHANGED
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.
|
5
|
+
# stub: riak-record 0.3.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "riak-record"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.3.0"
|
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-26"
|
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 = [
|
@@ -25,6 +25,28 @@ describe RiakRecord::Base do
|
|
25
25
|
expect(ExampleA.client).to eq(ExampleB.client)
|
26
26
|
end
|
27
27
|
|
28
|
+
describe "new" do
|
29
|
+
it "should accept a string" do
|
30
|
+
record = ExampleA.new("abc")
|
31
|
+
expect(record.id).to eq("abc")
|
32
|
+
end
|
33
|
+
it "should accept a int" do
|
34
|
+
record = ExampleA.new(123)
|
35
|
+
expect(record.id).to eq("123")
|
36
|
+
end
|
37
|
+
it "should accept an robject" do
|
38
|
+
robject = ExampleA.bucket.new("abc")
|
39
|
+
record = ExampleA.new(robject)
|
40
|
+
expect(record.id).to eq("abc")
|
41
|
+
end
|
42
|
+
it "should accept a hash" do
|
43
|
+
record = ExampleA.new(:id => "abc", :attribute1 => 'sappy', :index1 => 123)
|
44
|
+
expect(record.id).to eq("abc")
|
45
|
+
expect(record.attribute1).to eq('sappy')
|
46
|
+
expect(record.index1).to eq([123])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
28
50
|
describe "index_names" do
|
29
51
|
it "should look up the index by symbol" do
|
30
52
|
expect( ExampleA.index_names[:index1] ).to eq("index1_int")
|
@@ -129,6 +151,15 @@ describe RiakRecord::Base do
|
|
129
151
|
record.save
|
130
152
|
end
|
131
153
|
end
|
154
|
+
|
155
|
+
describe "delete" do
|
156
|
+
let(:saved_record){ ExampleA.create("abc") }
|
157
|
+
it "should remove from riak" do
|
158
|
+
expect{
|
159
|
+
saved_record.delete
|
160
|
+
}.to change{ ExampleA.find("abc") }.from(saved_record).to(nil)
|
161
|
+
end
|
162
|
+
end
|
132
163
|
end
|
133
164
|
|
134
165
|
describe "class methods" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riak-record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
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-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: riak-client
|