pebblebed 0.0.33 → 0.0.34
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/pebblebed/security/client.rb +6 -2
- data/lib/pebblebed/sinatra.rb +9 -2
- data/lib/pebblebed/version.rb +1 -1
- metadata +4 -4
@@ -2,7 +2,9 @@
|
|
2
2
|
module Pebblebed
|
3
3
|
module Security
|
4
4
|
class Client
|
5
|
-
|
5
|
+
# TTL is reset for every cache hit, so actual TTL might be much longer
|
6
|
+
# as long as the user keeps hitting that cache.
|
7
|
+
IDENTITY_MEMBERSHIPS_TTL = 10
|
6
8
|
|
7
9
|
def initialize(connector)
|
8
10
|
@connector = connector
|
@@ -22,9 +24,11 @@ module Pebblebed
|
|
22
24
|
private
|
23
25
|
|
24
26
|
def fetch_membership_data_for(identity)
|
25
|
-
|
27
|
+
cache_key = "identity_membership_data:#{identity}"
|
28
|
+
result = Pebblebed.memcached.fetch(cache_key, IDENTITY_MEMBERSHIPS_TTL) do
|
26
29
|
@connector.checkpoint.get("/identities/#{identity}/memberships").to_json
|
27
30
|
end
|
31
|
+
Pebblebed.memcached.touch(cache_key, IDENTITY_MEMBERSHIPS_TTL)
|
28
32
|
JSON.parse(result)
|
29
33
|
end
|
30
34
|
|
data/lib/pebblebed/sinatra.rb
CHANGED
@@ -4,6 +4,10 @@ require 'pebblebed'
|
|
4
4
|
module Sinatra
|
5
5
|
module Pebblebed
|
6
6
|
module Helpers
|
7
|
+
# Cache identity for this amount of seconds. TTL will be reset each cache hit,
|
8
|
+
# so real TTL might be much longer than this.
|
9
|
+
IDENTITY_CACHE_TTL = 10
|
10
|
+
|
7
11
|
# Render the markup for a part. A partspec takes the form
|
8
12
|
# "<kit>.<partname>", e.g. "base.post"
|
9
13
|
def part(partspec, params = {})
|
@@ -39,10 +43,13 @@ module Sinatra
|
|
39
43
|
if cache_current_identity?
|
40
44
|
cache_key = "identity-for-session-#{current_session}"
|
41
45
|
@identity = ::Pebblebed.memcached.get(cache_key)
|
42
|
-
|
46
|
+
if @identity
|
47
|
+
::Pebblebed.memcached.touch(cache_key, IDENTITY_CACHE_TTL)
|
48
|
+
return @identity
|
49
|
+
end
|
43
50
|
@identity = pebbles.checkpoint.get("/identities/me")[:identity]
|
44
51
|
# Cache identity only if there is a current user
|
45
|
-
::Pebblebed.memcached.set(cache_key, @identity,
|
52
|
+
::Pebblebed.memcached.set(cache_key, @identity, IDENTITY_CACHE_TTL) if @identity.id?
|
46
53
|
else
|
47
54
|
@identity = pebbles.checkpoint.get("/identities/me")[:identity]
|
48
55
|
end
|
data/lib/pebblebed/version.rb
CHANGED
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.34
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-11-
|
13
|
+
date: 2012-11-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -328,7 +328,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
328
328
|
version: '0'
|
329
329
|
segments:
|
330
330
|
- 0
|
331
|
-
hash: -
|
331
|
+
hash: -2833651708453981054
|
332
332
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
333
333
|
none: false
|
334
334
|
requirements:
|
@@ -337,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
337
337
|
version: '0'
|
338
338
|
segments:
|
339
339
|
- 0
|
340
|
-
hash: -
|
340
|
+
hash: -2833651708453981054
|
341
341
|
requirements: []
|
342
342
|
rubyforge_project: pebblebed
|
343
343
|
rubygems_version: 1.8.24
|