pebblebed 0.0.26 → 0.0.27
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/Gemfile +4 -0
- data/lib/pebblebed/http.rb +1 -1
- data/lib/pebblebed/security/access_data.rb +2 -2
- data/lib/pebblebed/security/listener.rb +17 -15
- data/lib/pebblebed/sinatra.rb +12 -1
- data/lib/pebblebed/version.rb +1 -1
- data/pebblebed.gemspec +1 -1
- data/spec/security/access_data_spec.rb +4 -4
- data/spec/security/client_spec.rb +5 -5
- data/spec/security/listener_spec.rb +1 -1
- data/spec/sinatra_spec.rb +25 -1
- data/spec/spec_helper.rb +4 -2
- metadata +114 -35
- data/spec/mockcached.rb +0 -25
data/Gemfile
CHANGED
data/lib/pebblebed/http.rb
CHANGED
@@ -74,8 +74,8 @@ module Pebblebed
|
|
74
74
|
memberships_record['memberships'].each do |membership|
|
75
75
|
@group_ids << membership['membership']['group_id']
|
76
76
|
end
|
77
|
-
memberships_record['
|
78
|
-
group['
|
77
|
+
memberships_record['access_groups'].each do |group|
|
78
|
+
group['access_group']['subtrees'].each do |subtree|
|
79
79
|
@subtrees << subtree.split('.')
|
80
80
|
end
|
81
81
|
end
|
@@ -6,7 +6,9 @@ module Pebblebed
|
|
6
6
|
|
7
7
|
def initialize(options)
|
8
8
|
@app_name = options[:app_name]
|
9
|
-
@handlers = {:
|
9
|
+
@handlers = {:access_group => {},
|
10
|
+
:access_group_membership => {},
|
11
|
+
:access_group_subtree => {}}
|
10
12
|
end
|
11
13
|
|
12
14
|
def start
|
@@ -21,30 +23,30 @@ module Pebblebed
|
|
21
23
|
end
|
22
24
|
|
23
25
|
def on_group_declared(&block)
|
24
|
-
@handlers[:
|
25
|
-
@handlers[:
|
26
|
+
@handlers[:access_group][:create] = block
|
27
|
+
@handlers[:access_group][:update] = block
|
26
28
|
end
|
27
29
|
|
28
30
|
def on_group_removed(&block)
|
29
|
-
@handlers[:
|
31
|
+
@handlers[:access_group][:delete] = block
|
30
32
|
end
|
31
33
|
|
32
34
|
def on_subtree_declared(&block)
|
33
|
-
@handlers[:
|
34
|
-
@handlers[:
|
35
|
+
@handlers[:access_group_subtree][:create] = block
|
36
|
+
@handlers[:access_group_subtree][:update] = block
|
35
37
|
end
|
36
38
|
|
37
39
|
def on_subtree_removed(&block)
|
38
|
-
@handlers[:
|
40
|
+
@handlers[:access_group_subtree][:delete] = block
|
39
41
|
end
|
40
42
|
|
41
43
|
def on_membership_declared(&block)
|
42
|
-
@handlers[:
|
43
|
-
@handlers[:
|
44
|
+
@handlers[:access_group_membership][:create] = block
|
45
|
+
@handlers[:access_group_membership][:update] = block
|
44
46
|
end
|
45
47
|
|
46
48
|
def on_membership_removed(&block)
|
47
|
-
@handlers[:
|
49
|
+
@handlers[:access_group_membership][:delete] = block
|
48
50
|
end
|
49
51
|
|
50
52
|
private
|
@@ -55,12 +57,12 @@ module Pebblebed
|
|
55
57
|
queue_options = {
|
56
58
|
:name => "#{@app_name}.security_listener",
|
57
59
|
:path => '**',
|
58
|
-
:klass => '
|
60
|
+
:klass => 'access_group|access_group_membership|access_group_subtree',
|
59
61
|
:event => '**',
|
60
62
|
:interval => 1
|
61
63
|
}
|
62
64
|
queue = river.queue queue_options
|
63
|
-
queue.subscribe(ack
|
65
|
+
queue.subscribe(:ack => true) do |message|
|
64
66
|
consider message
|
65
67
|
end
|
66
68
|
end
|
@@ -79,12 +81,12 @@ module Pebblebed
|
|
79
81
|
event_handler = @handlers[klass.to_sym][event.to_sym]
|
80
82
|
return unless event_handler
|
81
83
|
case klass
|
82
|
-
when '
|
84
|
+
when 'access_group'
|
83
85
|
event_handler.call(:id => attributes['id'], :label => attributes['label'])
|
84
|
-
when '
|
86
|
+
when 'access_group_membership'
|
85
87
|
event_handler.call(:group_id => attributes['group_id'],
|
86
88
|
:identity_id => attributes['identity_id'])
|
87
|
-
when '
|
89
|
+
when 'access_group_subtree'
|
88
90
|
event_handler.call(:group_id => attributes['group_id'],
|
89
91
|
:location => attributes['location'])
|
90
92
|
end
|
data/lib/pebblebed/sinatra.rb
CHANGED
@@ -33,9 +33,20 @@ module Sinatra
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def current_identity
|
36
|
+
return nil unless current_session
|
36
37
|
return @identity if @identity_checked
|
37
38
|
@identity_checked = true
|
38
|
-
|
39
|
+
if cache_current_identity?
|
40
|
+
@identity = ::Pebblebed.memcached.fetch("identity-for-session-#{current_session}", ttl = 60) do
|
41
|
+
pebbles.checkpoint.get("/identities/me")[:identity]
|
42
|
+
end
|
43
|
+
else
|
44
|
+
@identity = pebbles.checkpoint.get("/identities/me")[:identity]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def cache_current_identity?
|
49
|
+
settings.respond_to?(:cache_current_identity) && settings.cache_current_identity
|
39
50
|
end
|
40
51
|
|
41
52
|
def require_identity
|
data/lib/pebblebed/version.rb
CHANGED
data/pebblebed.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_development_dependency "simplecov"
|
25
25
|
s.add_development_dependency "sinatra" # for testing purposes
|
26
26
|
s.add_development_dependency "rack-test" # for testing purposes
|
27
|
-
|
27
|
+
|
28
28
|
s.add_runtime_dependency "deepstruct", ">= 0.0.2"
|
29
29
|
s.add_runtime_dependency "curb", ">= 0.7.14"
|
30
30
|
s.add_runtime_dependency "yajl-ruby"
|
@@ -5,7 +5,7 @@ require 'pebblebed/security/access_data'
|
|
5
5
|
describe Pebblebed::Security::AccessData do
|
6
6
|
let :access_data do
|
7
7
|
Pebblebed::Security::AccessData.new(
|
8
|
-
:
|
8
|
+
:access_groups => [1,2,3],
|
9
9
|
:subtrees => ['a.b', 'a.b.c.d.e', 'a.c.d', 'a.c.e.f']
|
10
10
|
)
|
11
11
|
end
|
@@ -28,9 +28,9 @@ describe Pebblebed::Security::AccessData do
|
|
28
28
|
{'membership' => {'id' => 10, 'group_id' => 1, 'identity_id' => 1}},
|
29
29
|
{'membership' => {'id' => 20, 'group_id' => 2, 'identity_id' => 1}},
|
30
30
|
],
|
31
|
-
'
|
32
|
-
{'
|
33
|
-
{'
|
31
|
+
'access_groups' => [
|
32
|
+
{'access_group' => {'id' => 1, 'label' => "group_1", 'subtrees' => ["a.b.c"]}},
|
33
|
+
{'access_group' => {'id' => 2, 'label' => "group_2", 'subtrees' => ["a.c.d.c"]}}
|
34
34
|
]
|
35
35
|
}
|
36
36
|
ad = Pebblebed::Security::AccessData.new(record)
|
@@ -11,12 +11,12 @@ describe Pebblebed::Security::Client do
|
|
11
11
|
let :sample_memberships_record do
|
12
12
|
{
|
13
13
|
'memberships' => [
|
14
|
-
{'membership' => {'id' => 10, '
|
15
|
-
{'membership' => {'id' => 20, '
|
14
|
+
{'membership' => {'id' => 10, 'access_group_id' => 1, 'identity_id' => 1}},
|
15
|
+
{'membership' => {'id' => 20, 'access_group_id' => 2, 'identity_id' => 1}},
|
16
16
|
],
|
17
|
-
'
|
18
|
-
{'
|
19
|
-
{'
|
17
|
+
'access_groups' => [
|
18
|
+
{'access_group' => {'id' => 1, 'label' => "group_1", 'subtrees' => ["a.b.c"]}},
|
19
|
+
{'access_group' => {'id' => 2, 'label' => "group_2", 'subtrees' => ["a.c.d.c"]}}
|
20
20
|
]
|
21
21
|
}
|
22
22
|
end
|
data/spec/sinatra_spec.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
2
|
require 'pebblebed'
|
4
3
|
require 'pebblebed/sinatra'
|
5
4
|
require 'sinatra/base'
|
@@ -51,6 +50,13 @@ describe Sinatra::Pebblebed do
|
|
51
50
|
Pebblebed::Connector.any_instance.stub(:checkpoint).and_return checkpoint
|
52
51
|
end
|
53
52
|
|
53
|
+
let(:random_session) { rand(36**128).to_s(36) }
|
54
|
+
|
55
|
+
before :each do
|
56
|
+
# Make sure the app get an uniqie session key for every received request
|
57
|
+
TestApp.any_instance.stub(:current_session) { random_session }
|
58
|
+
end
|
59
|
+
|
54
60
|
context "a guest" do
|
55
61
|
let(:identity) { guest }
|
56
62
|
|
@@ -125,4 +131,22 @@ describe Sinatra::Pebblebed do
|
|
125
131
|
last_response.body.should == 'Not found /nonexistant'
|
126
132
|
end
|
127
133
|
end
|
134
|
+
|
135
|
+
describe "current identity caching" do
|
136
|
+
let(:identity) { alice }
|
137
|
+
|
138
|
+
it "will not cache current_identity by default" do
|
139
|
+
checkpoint.should_receive(:get).twice
|
140
|
+
get '/private'
|
141
|
+
get '/private'
|
142
|
+
end
|
143
|
+
|
144
|
+
it "can be configured to cache current identity" do
|
145
|
+
session = random_session
|
146
|
+
app.set :cache_current_identity, true
|
147
|
+
checkpoint.should_receive(:get).once
|
148
|
+
get '/private'
|
149
|
+
get '/private'
|
150
|
+
end
|
151
|
+
end
|
128
152
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,14 +5,16 @@ SimpleCov.add_filter 'spec'
|
|
5
5
|
SimpleCov.add_filter 'config'
|
6
6
|
SimpleCov.start
|
7
7
|
|
8
|
-
require '
|
8
|
+
require 'memcache_mock'
|
9
9
|
require './spec/mock_pebble'
|
10
10
|
|
11
11
|
RSpec.configure do |c|
|
12
12
|
c.mock_with :rspec
|
13
|
+
c.before(:each) do
|
14
|
+
::Pebblebed.memcached = MemcacheMock.new
|
15
|
+
end
|
13
16
|
c.around(:each) do |example|
|
14
17
|
clear_cookies if respond_to?(:clear_cookies)
|
15
|
-
$memcached = Mockcached.new
|
16
18
|
example.run
|
17
19
|
end
|
18
20
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pebblebed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.27
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: rake
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: '0'
|
34
39
|
type: :development
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: simplecov
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: '0'
|
45
55
|
type: :development
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: sinatra
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :development
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: rack-test
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :development
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: deepstruct
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,10 +102,15 @@ dependencies:
|
|
77
102
|
version: 0.0.2
|
78
103
|
type: :runtime
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.0.2
|
81
111
|
- !ruby/object:Gem::Dependency
|
82
112
|
name: curb
|
83
|
-
requirement:
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
84
114
|
none: false
|
85
115
|
requirements:
|
86
116
|
- - ! '>='
|
@@ -88,10 +118,15 @@ dependencies:
|
|
88
118
|
version: 0.7.14
|
89
119
|
type: :runtime
|
90
120
|
prerelease: false
|
91
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 0.7.14
|
92
127
|
- !ruby/object:Gem::Dependency
|
93
128
|
name: yajl-ruby
|
94
|
-
requirement:
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
95
130
|
none: false
|
96
131
|
requirements:
|
97
132
|
- - ! '>='
|
@@ -99,10 +134,15 @@ dependencies:
|
|
99
134
|
version: '0'
|
100
135
|
type: :runtime
|
101
136
|
prerelease: false
|
102
|
-
version_requirements:
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
103
143
|
- !ruby/object:Gem::Dependency
|
104
144
|
name: queryparams
|
105
|
-
requirement:
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
106
146
|
none: false
|
107
147
|
requirements:
|
108
148
|
- - ! '>='
|
@@ -110,10 +150,15 @@ dependencies:
|
|
110
150
|
version: '0'
|
111
151
|
type: :runtime
|
112
152
|
prerelease: false
|
113
|
-
version_requirements:
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
114
159
|
- !ruby/object:Gem::Dependency
|
115
160
|
name: futurevalue
|
116
|
-
requirement:
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
117
162
|
none: false
|
118
163
|
requirements:
|
119
164
|
- - ! '>='
|
@@ -121,10 +166,15 @@ dependencies:
|
|
121
166
|
version: '0'
|
122
167
|
type: :runtime
|
123
168
|
prerelease: false
|
124
|
-
version_requirements:
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
125
175
|
- !ruby/object:Gem::Dependency
|
126
176
|
name: pathbuilder
|
127
|
-
requirement:
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
128
178
|
none: false
|
129
179
|
requirements:
|
130
180
|
- - ! '>='
|
@@ -132,10 +182,15 @@ dependencies:
|
|
132
182
|
version: '0'
|
133
183
|
type: :runtime
|
134
184
|
prerelease: false
|
135
|
-
version_requirements:
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ! '>='
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
136
191
|
- !ruby/object:Gem::Dependency
|
137
192
|
name: nokogiri
|
138
|
-
requirement:
|
193
|
+
requirement: !ruby/object:Gem::Requirement
|
139
194
|
none: false
|
140
195
|
requirements:
|
141
196
|
- - ! '>='
|
@@ -143,10 +198,15 @@ dependencies:
|
|
143
198
|
version: '0'
|
144
199
|
type: :runtime
|
145
200
|
prerelease: false
|
146
|
-
version_requirements:
|
201
|
+
version_requirements: !ruby/object:Gem::Requirement
|
202
|
+
none: false
|
203
|
+
requirements:
|
204
|
+
- - ! '>='
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
147
207
|
- !ruby/object:Gem::Dependency
|
148
208
|
name: i18n
|
149
|
-
requirement:
|
209
|
+
requirement: !ruby/object:Gem::Requirement
|
150
210
|
none: false
|
151
211
|
requirements:
|
152
212
|
- - ! '>='
|
@@ -154,10 +214,15 @@ dependencies:
|
|
154
214
|
version: '0'
|
155
215
|
type: :runtime
|
156
216
|
prerelease: false
|
157
|
-
version_requirements:
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
218
|
+
none: false
|
219
|
+
requirements:
|
220
|
+
- - ! '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
158
223
|
- !ruby/object:Gem::Dependency
|
159
224
|
name: activesupport
|
160
|
-
requirement:
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
161
226
|
none: false
|
162
227
|
requirements:
|
163
228
|
- - ! '>='
|
@@ -165,10 +230,15 @@ dependencies:
|
|
165
230
|
version: '0'
|
166
231
|
type: :runtime
|
167
232
|
prerelease: false
|
168
|
-
version_requirements:
|
233
|
+
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
none: false
|
235
|
+
requirements:
|
236
|
+
- - ! '>='
|
237
|
+
- !ruby/object:Gem::Version
|
238
|
+
version: '0'
|
169
239
|
- !ruby/object:Gem::Dependency
|
170
240
|
name: bunny
|
171
|
-
requirement:
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
172
242
|
none: false
|
173
243
|
requirements:
|
174
244
|
- - ! '>='
|
@@ -176,7 +246,12 @@ dependencies:
|
|
176
246
|
version: '0'
|
177
247
|
type: :runtime
|
178
248
|
prerelease: false
|
179
|
-
version_requirements:
|
249
|
+
version_requirements: !ruby/object:Gem::Requirement
|
250
|
+
none: false
|
251
|
+
requirements:
|
252
|
+
- - ! '>='
|
253
|
+
- !ruby/object:Gem::Version
|
254
|
+
version: '0'
|
180
255
|
description: Development tools for working with Pebblebed
|
181
256
|
email:
|
182
257
|
- katrina@bengler.no
|
@@ -215,7 +290,6 @@ files:
|
|
215
290
|
- spec/http_spec.rb
|
216
291
|
- spec/labels_spec.rb
|
217
292
|
- spec/mock_pebble.rb
|
218
|
-
- spec/mockcached.rb
|
219
293
|
- spec/river_spec.rb
|
220
294
|
- spec/river_subscription_spec.rb
|
221
295
|
- spec/security/access_data_spec.rb
|
@@ -236,15 +310,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
236
310
|
- - ! '>='
|
237
311
|
- !ruby/object:Gem::Version
|
238
312
|
version: '0'
|
313
|
+
segments:
|
314
|
+
- 0
|
315
|
+
hash: 1631620775838906147
|
239
316
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
240
317
|
none: false
|
241
318
|
requirements:
|
242
319
|
- - ! '>='
|
243
320
|
- !ruby/object:Gem::Version
|
244
321
|
version: '0'
|
322
|
+
segments:
|
323
|
+
- 0
|
324
|
+
hash: 1631620775838906147
|
245
325
|
requirements: []
|
246
326
|
rubyforge_project: pebblebed
|
247
|
-
rubygems_version: 1.8.
|
327
|
+
rubygems_version: 1.8.24
|
248
328
|
signing_key:
|
249
329
|
specification_version: 3
|
250
330
|
summary: Development tools for working with Pebblebed
|
@@ -255,7 +335,6 @@ test_files:
|
|
255
335
|
- spec/http_spec.rb
|
256
336
|
- spec/labels_spec.rb
|
257
337
|
- spec/mock_pebble.rb
|
258
|
-
- spec/mockcached.rb
|
259
338
|
- spec/river_spec.rb
|
260
339
|
- spec/river_subscription_spec.rb
|
261
340
|
- spec/security/access_data_spec.rb
|
data/spec/mockcached.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
class Mockcached
|
2
|
-
def initialize
|
3
|
-
@store = {}
|
4
|
-
end
|
5
|
-
|
6
|
-
def set(*args)
|
7
|
-
@store[args[0]] = args[1]
|
8
|
-
end
|
9
|
-
|
10
|
-
def get(*args)
|
11
|
-
@store[args[0]]
|
12
|
-
end
|
13
|
-
|
14
|
-
def get_multi(*keys)
|
15
|
-
result = {}
|
16
|
-
keys.each do |key|
|
17
|
-
result[key] = get(key) if @store.has_key?(key)
|
18
|
-
end
|
19
|
-
result
|
20
|
-
end
|
21
|
-
|
22
|
-
def delete(*args)
|
23
|
-
@store.delete(args[0])
|
24
|
-
end
|
25
|
-
end
|