em-riak 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|