em-riak 0.2.7 → 0.2.8
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/.gitignore +1 -0
- data/README.md +7 -1
- data/em-riak.gemspec +2 -2
- data/lib/em-riak/basic.rb +46 -47
- data/lib/em-riak/grapher.rb +3 -3
- data/lib/em-riak/map_reduce.rb +6 -3
- data/lib/em-riak/secondary_index.rb +5 -3
- data/lib/em-riak/utils.rb +3 -2
- data/lib/em-riak/version.rb +1 -1
- data/spec/unit/basic.rb +2 -3
- data/spec/unit/core.rb +18 -6
- data/spec/unit/map_reduce.rb +3 -1
- data/spec/unit/secondary_index.rb +8 -2
- metadata +12 -12
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -81,7 +81,7 @@ Here provide some options that can do with each seperate request
|
|
81
81
|
|
82
82
|
**Example**
|
83
83
|
|
84
|
-
EmRiak.create("member5",{:replication=>{:
|
84
|
+
EmRiak.create("member5",{:replication=>{:n_val=>3}},{:name=>"HandsomeGuy"})
|
85
85
|
|
86
86
|
**Available Options**
|
87
87
|
|
@@ -107,7 +107,13 @@ Use it directly as following :
|
|
107
107
|
{"reduce"=> {"language"=> "erlang", "module"=>"riak_kv_mapreduce", "function"=>"reduce_identity", "keep"=>true} }
|
108
108
|
]})
|
109
109
|
|
110
|
+
### Contributing
|
110
111
|
|
112
|
+
* Fork it
|
113
|
+
* Create your feature branch (git checkout -b my-new-feature)
|
114
|
+
* Commit your changes (git commit -am 'Add some feature')
|
115
|
+
* Push to the branch (git push origin my-new-feature)
|
116
|
+
* Create new Pull Request
|
111
117
|
|
112
118
|
### TO-DO
|
113
119
|
Full Text Seacrh
|
data/em-riak.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'em-riak'
|
3
|
-
s.version = '0.2.
|
4
|
-
s.date = '2012-12-
|
3
|
+
s.version = '0.2.8'
|
4
|
+
s.date = '2012-12-28'
|
5
5
|
s.summary = "Riak client for eventmachine"
|
6
6
|
s.description = "An extremely fast and convenient riak client for eventmachine."
|
7
7
|
s.authors = ["Von"]
|
data/lib/em-riak/basic.rb
CHANGED
@@ -20,7 +20,7 @@ module EmRiak
|
|
20
20
|
else
|
21
21
|
EmRiak.bucket=RIAKBUCKET
|
22
22
|
end
|
23
|
-
EmRiak.replication={"W"=>3,"R"=>1} if EmRiak.replication.nil?
|
23
|
+
EmRiak.replication={"W"=>3,"R"=>1,"n_val"=>3} if EmRiak.replication.nil?
|
24
24
|
EmRiak.debug=false if EmRiak.debug.nil?
|
25
25
|
end
|
26
26
|
end
|
@@ -89,7 +89,7 @@ module EmRiak
|
|
89
89
|
data,callback=handle_callback(obj_key,"delete",opts,callback)
|
90
90
|
operate_bucket= select_bucket(data)
|
91
91
|
url="/buckets/#{operate_bucket}/keys/#{key_handler(obj_key)}"
|
92
|
-
http("
|
92
|
+
http("delete",obj_key,url,data,callback)
|
93
93
|
key=nil
|
94
94
|
end
|
95
95
|
|
@@ -146,20 +146,8 @@ module EmRiak
|
|
146
146
|
def http(method,key,url,data,callback=nil,res=nil)
|
147
147
|
(callback || self.async && ["delete","put","post"].index(method) && key!="mapred") ? em_http(method,key,url,data,callback) : open_http(method,key,url,data)
|
148
148
|
end
|
149
|
-
def return_body_handler(string,hash_container,handle_type,handle_type_split_mapper={"hash"=>":","string"=>"=","common"=>","})
|
150
|
-
hash_container={} if !hash_container
|
151
|
-
|
152
|
-
string=string.gsub("{","").gsub("}","") if handle_type!="hash"
|
153
|
-
split_by= hash_container.class==EmRiak::StorageObject ? "&" : ","
|
154
|
-
string.split(split_by).each do |vars|
|
155
|
-
key,value=vars.split(handle_type_split_mapper[handle_type])
|
156
|
-
value=return_body_handler(value,nil,"hash") if value && value.index("{")
|
157
|
-
value=json_decode("{#{value}}") if value && value.index(":") && value.index(",")
|
158
|
-
hash_container[key.to_sym]=value if value
|
159
|
-
end
|
160
|
-
hash_container
|
161
|
-
end
|
162
149
|
|
150
|
+
protected
|
163
151
|
def open_http(method,key,url,data,res={})
|
164
152
|
has_http_instance?
|
165
153
|
data={:body=>{},:head=>{},:query=>{}} if !data
|
@@ -172,7 +160,6 @@ module EmRiak
|
|
172
160
|
|
173
161
|
res=HTTPI.request(method.to_sym,http_client)
|
174
162
|
res=res.body if res.class==HTTPI::Response
|
175
|
-
|
176
163
|
res=handle_response_string_to_object(key,res,method,data)
|
177
164
|
|
178
165
|
res=nil if res && res.class!=String && res.count<1
|
@@ -180,34 +167,6 @@ module EmRiak
|
|
180
167
|
return res
|
181
168
|
end
|
182
169
|
|
183
|
-
def handle_response_string_to_object(key,res,method,data)
|
184
|
-
raise "response can't be nil" if !res
|
185
|
-
|
186
|
-
return res if key=="mapred"
|
187
|
-
return nil if ["2i"].index(key)
|
188
|
-
|
189
|
-
raise "data not found" if ["not found\n"].index(res)
|
190
|
-
raise "method is not match" if !["get","put","post"].index(method)
|
191
|
-
raise "data is empty" if method=="get" && res.gsub(" ","").length<1
|
192
|
-
|
193
|
-
obj=EmRiak::StorageObject.new()
|
194
|
-
|
195
|
-
if res && res!="not found\n" &&
|
196
|
-
if res.class==String
|
197
|
-
obj=return_body_handler(URI.unescape(res.force_encoding("UTF-8")).gsub("+"," ").gsub("=>",":"),obj,"string")
|
198
|
-
elsif res.class==Hash
|
199
|
-
res.each{|varkey,value| obj[varkey.to_sym]=value }
|
200
|
-
end
|
201
|
-
|
202
|
-
data.each{|k,v| obj[k]=v } if res.length<1
|
203
|
-
obj[:riak_key]=key if obj.length>0
|
204
|
-
end
|
205
|
-
return obj
|
206
|
-
rescue Exception=>e
|
207
|
-
puts "handle response error reason #{e}" if EmRiak.debug
|
208
|
-
return nil
|
209
|
-
end
|
210
|
-
|
211
170
|
def em_http(method,key,url,data,async_callback)
|
212
171
|
data[:retry]=0 if !data[:retry]
|
213
172
|
begin
|
@@ -262,6 +221,46 @@ module EmRiak
|
|
262
221
|
res
|
263
222
|
end
|
264
223
|
|
224
|
+
def handle_response_string_to_object(key,res,method,data)
|
225
|
+
raise "response can't be nil" if !res
|
226
|
+
return res if key=="mapred"
|
227
|
+
return nil if ["2i"].index(key)
|
228
|
+
|
229
|
+
raise "data not found" if ["not found\n"].index(res)
|
230
|
+
raise "method is not match" if !["get","put","post"].index(method)
|
231
|
+
raise "data is empty" if method=="get" && res.gsub(" ","").length<1
|
232
|
+
|
233
|
+
obj=EmRiak::StorageObject.new()
|
234
|
+
|
235
|
+
if res && res!="not found\n" &&
|
236
|
+
if res.class==String
|
237
|
+
obj=return_body_handler(URI.unescape(res.force_encoding("UTF-8")).gsub("+"," ").gsub("=>",":"),obj,"string")
|
238
|
+
elsif res.class==Hash
|
239
|
+
res.each{|varkey,value| obj[varkey.to_sym]=value }
|
240
|
+
end
|
241
|
+
|
242
|
+
data.each{|k,v| obj[k]=v } if res.length<1
|
243
|
+
obj[:riak_key]=key if obj.length>0
|
244
|
+
end
|
245
|
+
return obj
|
246
|
+
rescue Exception=>e
|
247
|
+
puts "handle response error reason #{e}" if EmRiak.debug
|
248
|
+
return nil
|
249
|
+
end
|
250
|
+
|
251
|
+
def return_body_handler(string,hash_container,origin_data_type,origin_data_type_split_mapper={"hash"=>":","string"=>"=","common"=>","})
|
252
|
+
hash_container={} if !hash_container
|
253
|
+
string=string.gsub("{","").gsub("}","") if origin_data_type!="hash"
|
254
|
+
split_by= hash_container.class==EmRiak::StorageObject ? "&" : ","
|
255
|
+
string.split(split_by).each do |vars|
|
256
|
+
key,value=vars.split(origin_data_type_split_mapper[origin_data_type])
|
257
|
+
value=return_body_handler(value,nil,"hash") if value && value.index("{")
|
258
|
+
value=json_decode("{#{value}}") if value && value.index(":") && value.index(",")
|
259
|
+
hash_container[key.to_sym]=value if value
|
260
|
+
end
|
261
|
+
hash_container
|
262
|
+
end
|
263
|
+
|
265
264
|
def handle_callback(key,method,opts,callback,data={})
|
266
265
|
option_response=handle_options(method,opts)
|
267
266
|
if callback
|
@@ -279,11 +278,11 @@ module EmRiak
|
|
279
278
|
def handle_options(action,opts,header={},query="",extra_setting={})
|
280
279
|
#Load default header setting
|
281
280
|
case action
|
282
|
-
when "save"
|
281
|
+
when "save","add"
|
283
282
|
header["Content-Type"]="application/json"
|
284
283
|
when "get"
|
285
284
|
header["Content-Type"]="application/json"
|
286
|
-
when "destroy","delete"
|
285
|
+
when "destroy","delete","remove"
|
287
286
|
header["Content-Type"]="application/json"
|
288
287
|
when "add_link"
|
289
288
|
header["Content-Type"]="application/json"
|
@@ -350,6 +349,7 @@ module EmRiak
|
|
350
349
|
opts[:replication].each{|k,v| query+="&#{k}={v}" } if opts[:replication] && action=="get"
|
351
350
|
opts[:query].each{|k,v| query+="&#{k}={v}" } if opts[:query]
|
352
351
|
end
|
352
|
+
header=convert_params_layers(header,:to_s)
|
353
353
|
res=[extra_setting,header,query]
|
354
354
|
res << callback if callback
|
355
355
|
res
|
@@ -371,7 +371,6 @@ module EmRiak
|
|
371
371
|
def json_decode(obj,times=0)
|
372
372
|
y=Yajl::Parser.new()
|
373
373
|
data=y.parse(obj)
|
374
|
-
convert_params_layers(data,:to_sym)
|
375
374
|
rescue Exception => e
|
376
375
|
puts "json_decode error : #{e}" if EmRiak.debug
|
377
376
|
obj
|
data/lib/em-riak/grapher.rb
CHANGED
@@ -5,11 +5,11 @@ module EmRiak
|
|
5
5
|
class LinkWalk
|
6
6
|
def add_link(key,*opts)
|
7
7
|
data={}
|
8
|
-
data[:head], data[:query] = EmRiak.handle_options
|
8
|
+
data[:head], data[:query] = EmRiak.send :handle_options, "add_link",opts
|
9
9
|
data[:query]= data[:query] && data[:query].length>0 ? data[:query]+"&returnbody=true" : "?returnbody=true"
|
10
10
|
|
11
11
|
url="/buckets/#{EmRiak.bucket}/keys/#{key}"
|
12
|
-
|
12
|
+
|
13
13
|
response=open("#{RIAKHOST[rand(RIAKHOST.count)]}/buckets/#{EmRiak.bucket}/keys/#{key}?returnbody=true")
|
14
14
|
body,links = rehandle_link_and_params(response)
|
15
15
|
|
@@ -22,7 +22,7 @@ module EmRiak
|
|
22
22
|
|
23
23
|
def remove_link(key,*opts)
|
24
24
|
data={}
|
25
|
-
data[:head], data[:query] = EmRiak.handle_options
|
25
|
+
data[:head], data[:query] = EmRiak.send :handle_options, "add_link",opts
|
26
26
|
data[:query]= data[:query] && data[:query].length>0 ? data[:query]+"&returnbody=true" : "?returnbody=true"
|
27
27
|
|
28
28
|
url="/buckets/#{EmRiak.bucket}/keys/#{key}"
|
data/lib/em-riak/map_reduce.rb
CHANGED
@@ -26,7 +26,7 @@ module EmRiak
|
|
26
26
|
submit_work=eval(submit_work)
|
27
27
|
end
|
28
28
|
url="/mapred"
|
29
|
-
map_reduce_json=EmRiak.json_encode
|
29
|
+
map_reduce_json=EmRiak.send :json_encode ,submit_work
|
30
30
|
data={:head=>{"Content-Type"=>"application/json"},:body=>map_reduce_json}
|
31
31
|
|
32
32
|
callback_proc=Proc.new{|results| callback.call(callback_handler(results,result_handler)) } if callback
|
@@ -40,9 +40,12 @@ module EmRiak
|
|
40
40
|
def callback_handler(res,result_handler)
|
41
41
|
if res.class==String
|
42
42
|
res=EscapeUtils.unescape_url(res.encode('UTF-8').gsub("(","\(").gsub(")","\)").gsub("+","").gsub("=>",":").gsub("\"{","{").gsub("}\"","}").gsub("%20"," ").gsub("%22","@!quote!@")).gsub("@!quote!@","\\\"")
|
43
|
-
res=EmRiak.json_decode
|
43
|
+
res=EmRiak.send :json_decode ,res
|
44
|
+
res=eval(res) if res.class==String
|
45
|
+
end
|
46
|
+
if res.class==Hash
|
47
|
+
res=EmRiak.send :convert_params_layers, res,:to_sym
|
44
48
|
end
|
45
|
-
res=EmRiak.convert_params_layers(res,:to_sym) if res.class==Hash
|
46
49
|
res=result_handler.call(res,{}) if result_handler
|
47
50
|
res
|
48
51
|
end
|
@@ -18,6 +18,7 @@ module EmRiak
|
|
18
18
|
|
19
19
|
def handle_data_and_options(data_self,args)
|
20
20
|
data={:head=>data_self[:head],:body=>data_self,:query=>{}}
|
21
|
+
data[:head]={"Content-Type"=>"application/json"} if !data[:head]
|
21
22
|
data[:body].delete(:head)
|
22
23
|
args=args[0] if args[0].class==Array
|
23
24
|
opts={:bin=>args[0]}
|
@@ -27,6 +28,7 @@ module EmRiak
|
|
27
28
|
else
|
28
29
|
args[1..args.count]
|
29
30
|
end
|
31
|
+
opts[:secondary_index]=opts[:secondary_index].first if opts[:secondary_index].count==1 && opts.first.class==Array
|
30
32
|
[data, opts]
|
31
33
|
end
|
32
34
|
def merge_tag(new_heads,old_heads,res={})
|
@@ -38,10 +40,10 @@ module EmRiak
|
|
38
40
|
end
|
39
41
|
|
40
42
|
def add_as_index(data_self,data,opts)
|
41
|
-
temp_head, data[:query] = EmRiak.handle_options
|
43
|
+
extra_setting, temp_head, data[:query] = EmRiak.send :handle_options, "post",opts
|
42
44
|
data[:head]=merge_tag(temp_head,data[:head])
|
43
45
|
data_self[:head]=data[:head]
|
44
|
-
|
46
|
+
|
45
47
|
url="/buckets/#{EmRiak.bucket}/keys/#{data_self[:riak_key]}"
|
46
48
|
EmRiak.http("post","2i",url,data)
|
47
49
|
end
|
@@ -62,7 +64,7 @@ module EmRiak
|
|
62
64
|
old_heads
|
63
65
|
end
|
64
66
|
def remove_as_index(data_self,data,opts)
|
65
|
-
temp_head, data[:query] = EmRiak.handle_options
|
67
|
+
extra_setting, temp_head, data[:query] = EmRiak.send :handle_options ,"post",opts
|
66
68
|
data[:head]=destroy_tag(temp_head,data[:head])
|
67
69
|
data_self[:head]=data[:head]
|
68
70
|
|
data/lib/em-riak/utils.rb
CHANGED
@@ -2,13 +2,14 @@ module EmRiak
|
|
2
2
|
module Util
|
3
3
|
extend self
|
4
4
|
def clean_bucket(bucket_name)
|
5
|
-
keys=EmRiak::MapReduce.submit(:clean_bucket,{"bucket"=>bucket_name})
|
5
|
+
keys=EmRiak::MapReduce.submit([:clean_bucket,{"bucket"=>bucket_name}])
|
6
6
|
if keys
|
7
7
|
if !(keys.class==Hash && keys[:error])
|
8
8
|
keys=keys[0] if keys.class==Array && keys.count==1
|
9
9
|
keys.each{|key|
|
10
|
-
key=key[0].gsub("\\","\/")
|
10
|
+
key=key[0].to_s.gsub("\\","\/")
|
11
11
|
EmRiak.destroy(URI.escape(key[0]).to_s)
|
12
|
+
EmRiak.destroy(URI.escape(":#{key[0]}").to_s)
|
12
13
|
}
|
13
14
|
puts "clean done"
|
14
15
|
else
|
data/lib/em-riak/version.rb
CHANGED
data/spec/unit/basic.rb
CHANGED
@@ -10,7 +10,6 @@ require File.expand_path('../../../lib/em-riak', __FILE__)
|
|
10
10
|
gem 'minitest'
|
11
11
|
require 'minitest/autorun'
|
12
12
|
|
13
|
-
|
14
13
|
class TestDirectCRUD < MiniTest::Unit::TestCase
|
15
14
|
def setup
|
16
15
|
EmRiak::Connection.new({:bucket=>"test-member",:async=>false,:hosts=>TEST_RIAK_HOSTS})
|
@@ -70,8 +69,8 @@ class TestAsyncCRUD < MiniTest::Unit::TestCase
|
|
70
69
|
|
71
70
|
def test_async_destroy
|
72
71
|
EM.run do
|
73
|
-
EmRiak.destroy("member5"
|
74
|
-
assert_equal nil,member
|
72
|
+
EmRiak.destroy("member5"){|member|
|
73
|
+
assert_equal nil,member
|
75
74
|
member=EmRiak.find("member5")
|
76
75
|
assert_equal nil,member
|
77
76
|
EM.stop
|
data/spec/unit/core.rb
CHANGED
@@ -25,6 +25,8 @@ class TestEmRiakCoreFunctions < MiniTest::Unit::TestCase
|
|
25
25
|
EmRiak.bucket="test-member"
|
26
26
|
@member=EmRiak.find("member5",{:bucket=>"test-nil"})
|
27
27
|
assert_equal nil,@member
|
28
|
+
|
29
|
+
@member=EmRiak.create("member5",@data)
|
28
30
|
EmRiak.bucket="test-nil"
|
29
31
|
@member=EmRiak.find("member5",{:bucket=>"test-member"})
|
30
32
|
assert_equal @data,@member
|
@@ -45,23 +47,33 @@ class TestEmRiakCoreFunctions < MiniTest::Unit::TestCase
|
|
45
47
|
end
|
46
48
|
|
47
49
|
def test_key_handler
|
48
|
-
|
49
|
-
assert_equal "%
|
50
|
+
data=EmRiak.send :key_handler, "天天寫程式會變大神"
|
51
|
+
assert_equal "%E5%A4%A9%E5%A4%A9%E5%AF%AB%E7%A8%8B%E5%BC%8F%E6%9C%83%E8%AE%8A%E5%A4%A7%E7%A5%9E",data
|
52
|
+
data=EmRiak.send :key_handler, "[欣欣]+[人帥真好]*(會寫程式)/大神"
|
53
|
+
assert_equal "%5B%E6%AC%A3%E6%AC%A3%5D%2B%5B%E4%BA%BA%E5%B8%A5%E7%9C%9F%E5%A5%BD%5D%2A%28%E6%9C%83%E5%AF%AB%E7%A8%8B%E5%BC%8F%29%2F%E5%A4%A7%E7%A5%9E",data
|
50
54
|
end
|
51
55
|
|
52
56
|
def test_convert_params_layers
|
53
57
|
origin={:name=>"Von",:likes=>["ruby","text"]}
|
54
|
-
string_collect=EmRiak.convert_params_layers
|
55
|
-
symbol_collect=EmRiak.convert_params_layers
|
58
|
+
string_collect=EmRiak.send :convert_params_layers, origin,:to_s
|
59
|
+
symbol_collect=EmRiak.send :convert_params_layers, string_collect,:to_sym
|
56
60
|
assert_equal origin,symbol_collect
|
57
61
|
end
|
58
62
|
|
59
63
|
def test_json_coder
|
60
64
|
origin={:name=>"Von",:gender=>"male"}
|
61
|
-
json=EmRiak.json_encode
|
62
|
-
hash=EmRiak.json_decode
|
65
|
+
json=EmRiak.send :json_encode, origin
|
66
|
+
hash=EmRiak.send :json_decode, json
|
67
|
+
hash=EmRiak.send :convert_params_layers ,hash,:to_sym
|
63
68
|
assert_equal origin,hash
|
64
69
|
end
|
70
|
+
|
71
|
+
def test_return_body_handler
|
72
|
+
origin="name=5&riak_key=member5&head={\"x-riak-index-likes_bin\":\"cool, ruby, social, 天天開心, 寫程式好Happy\", \"returnbody\":\"true\"}"
|
73
|
+
data=EmRiak.send :return_body_handler, origin, EmRiak::StorageObject.new(),"string"
|
74
|
+
should_be_data={:name=>"5",:riak_key=>"member5",:head=>{"x-riak-index-likes_bin"=>"cool, ruby, social, 天天開心, 寫程式好Happy","returnbody"=>"true"}}
|
75
|
+
assert_equal should_be_data,data
|
76
|
+
end
|
65
77
|
end
|
66
78
|
|
67
79
|
class TestEmRiakStorageObjcetFunctionality < MiniTest::Unit::TestCase
|
data/spec/unit/map_reduce.rb
CHANGED
@@ -5,7 +5,7 @@ require 'em-http-request'
|
|
5
5
|
require 'httpi'
|
6
6
|
require 'yajl'
|
7
7
|
require 'em-riak'
|
8
|
-
TEST_RIAK_HOSTS=["http://127.0.0.1:8091"
|
8
|
+
TEST_RIAK_HOSTS=["http://127.0.0.1:8091"]
|
9
9
|
require File.expand_path('../../../lib/em-riak', __FILE__)
|
10
10
|
gem 'minitest'
|
11
11
|
require 'minitest/autorun'
|
@@ -18,6 +18,8 @@ class TestMapReduce < MiniTest::Unit::TestCase
|
|
18
18
|
{"reduce"=> {"language"=> "erlang", "module"=>"riak_kv_mapreduce", "function"=>"reduce_set_union", "keep"=>true} }
|
19
19
|
]
|
20
20
|
}
|
21
|
+
@member=EmRiak.create("member8",{:name=>"Tester"})
|
22
|
+
@member.add_tag(:likes,["cool","ruby","social","天天開心","寫程式好Happy"])
|
21
23
|
end
|
22
24
|
|
23
25
|
def test_sumbit_map_reduce
|
@@ -5,7 +5,7 @@ require 'em-http-request'
|
|
5
5
|
require 'httpi'
|
6
6
|
require 'yajl'
|
7
7
|
require 'em-riak'
|
8
|
-
TEST_RIAK_HOSTS=["http://127.0.0.1:8091"
|
8
|
+
TEST_RIAK_HOSTS=["http://127.0.0.1:8091"]
|
9
9
|
require File.expand_path('../../../lib/em-riak', __FILE__)
|
10
10
|
gem 'minitest'
|
11
11
|
require 'minitest/autorun'
|
@@ -23,12 +23,14 @@ class TestSecondaryIndex < MiniTest::Unit::TestCase
|
|
23
23
|
|
24
24
|
def test_add_secondary_index
|
25
25
|
@member.add_tag(:likes,@tags)
|
26
|
+
@member=EmRiak.find("member5")
|
26
27
|
data=EmRiak.search(:secondary_index,{:bin=>:likes},@tags).reject{|ary| ary==[false,false]}
|
27
28
|
assert_operator 0, :<, data.count
|
28
29
|
end
|
29
30
|
|
30
31
|
def test_show_secondary_index
|
31
32
|
@member.add_tag(:likes,@tags)
|
33
|
+
@member=EmRiak.find("member5")
|
32
34
|
data=EmRiak.search(:secondary_index,{:bin=>:likes},@tags).reject{|ary| ary==[false,false]}
|
33
35
|
assert_operator 0, :<, data.count
|
34
36
|
|
@@ -38,8 +40,12 @@ class TestSecondaryIndex < MiniTest::Unit::TestCase
|
|
38
40
|
end
|
39
41
|
|
40
42
|
def test_remove_secondary_index
|
43
|
+
@member=EmRiak.find("member5")
|
41
44
|
@member.remove_tag(:likes,@tags)
|
45
|
+
@member=EmRiak.find("member8")
|
46
|
+
@member.remove_tag(:likes,@tags)
|
47
|
+
|
42
48
|
data=EmRiak.search(:secondary_index,{:bin=>:likes},@tags).reject{|ary| ary==[false,false]}
|
43
|
-
assert_operator 1, :>, data.count
|
49
|
+
assert_operator 1, :>, data.count
|
44
50
|
end
|
45
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-riak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-28 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: escape_utils
|
16
|
-
requirement: &
|
16
|
+
requirement: &70274801323780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70274801323780
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: yajl-ruby
|
27
|
-
requirement: &
|
27
|
+
requirement: &70274801322140 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70274801322140
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: httpi
|
38
|
-
requirement: &
|
38
|
+
requirement: &70274801321400 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70274801321400
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: eventmachine
|
49
|
-
requirement: &
|
49
|
+
requirement: &70274801320120 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70274801320120
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: em-http-request
|
60
|
-
requirement: &
|
60
|
+
requirement: &70274801319460 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70274801319460
|
69
69
|
description: An extremely fast and convenient riak client for eventmachine.
|
70
70
|
email: von@vonstark.co
|
71
71
|
executables: []
|