riak-record 0.2.0 → 0.3.0
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/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
|