has_global_session 0.8.9 → 0.8.10

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.
@@ -7,8 +7,8 @@ spec = Gem::Specification.new do |s|
7
7
  s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
8
8
 
9
9
  s.name = 'has_global_session'
10
- s.version = '0.8.9'
11
- s.date = '2010-06-29'
10
+ s.version = '0.8.10'
11
+ s.date = '2010-07-01'
12
12
 
13
13
  s.authors = ['Tony Spataro']
14
14
  s.email = 'code@tracker.xeger.net'
@@ -1,51 +1,53 @@
1
1
  module HasGlobalSession
2
2
  class IntegratedSession
3
- def initialize(local_session, global_session)
4
- @local_session = local_session
5
- @global_session = global_session
3
+ attr_reader :local, :global
4
+
5
+ def initialize(local, global)
6
+ @local = local
7
+ @global = global
6
8
  end
7
9
 
8
10
  def [](key)
9
11
  key = key.to_s
10
- if @global_session.supports_key?(key)
11
- @global_session[key]
12
+ if @global.supports_key?(key)
13
+ @global[key]
12
14
  else
13
- @local_session[key]
15
+ @local[key]
14
16
  end
15
17
  end
16
18
 
17
19
  def []=(key, value)
18
20
  key = key.to_s
19
- if @global_session.supports_key?(key)
20
- @global_session[key] = value
21
+ if @global.supports_key?(key)
22
+ @global[key] = value
21
23
  else
22
- @local_session[key] = value
24
+ @local[key] = value
23
25
  end
24
26
  end
25
27
 
26
28
  def has_key?(key)
27
29
  key = key.to_s
28
- @global_session.has_key(key) || @local_session.has_key?(key)
30
+ @global.has_key(key) || @local.has_key?(key)
29
31
  end
30
32
 
31
33
  def keys
32
- @global_session.keys + @local_session.keys
34
+ @global.keys + @local.keys
33
35
  end
34
36
 
35
37
  def values
36
- @global_session.values + @local_session.values
38
+ @global.values + @local.values
37
39
  end
38
40
 
39
41
  def each_pair(&block)
40
- @global_session.each_pair(&block)
41
- @local_session.each_pair(&block)
42
+ @global.each_pair(&block)
43
+ @local.each_pair(&block)
42
44
  end
43
45
 
44
46
  def method_missing(meth, *args)
45
- if @global_session.respond_to?(meth)
46
- return @global_session.send(meth, *args)
47
- elsif @local_session.respond_to?(meth)
48
- return @local_session.send(meth, *args)
47
+ if @global.respond_to?(meth)
48
+ return @global.send(meth, *args)
49
+ elsif @local.respond_to?(meth)
50
+ return @local.send(meth, *args)
49
51
  else
50
52
  super
51
53
  end
@@ -12,7 +12,10 @@ module HasGlobalSession
12
12
 
13
13
  def session_with_global_session
14
14
  if global_session
15
- @integrated_session ||= IntegratedSession.new(session_without_global_session, global_session)
15
+ unless @integrated_session && (@integrated_session.global == @global_session)
16
+ @integrated_session =
17
+ IntegratedSession.new(session_without_global_session, global_session)
18
+ end
16
19
  return @integrated_session
17
20
  else
18
21
  return session_without_global_session
@@ -38,9 +41,9 @@ module HasGlobalSession
38
41
  rescue Exception => e
39
42
  #silently recover from any error by initializing a new global session
40
43
  @global_session = GlobalSession.new(directory)
41
- global_session_update_cookie
42
44
  #give the Rails app a chance to handle the exception
43
- raise e
45
+ #unless it's an ExpiredSession, which we handle transparently
46
+ raise e unless e.is_a?(ExpiredSession)
44
47
  end
45
48
  end
46
49
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_global_session
3
3
  version: !ruby/object:Gem::Version
4
- hash: 45
4
+ hash: 43
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 9
10
- version: 0.8.9
9
+ - 10
10
+ version: 0.8.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tony Spataro
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-29 00:00:00 -07:00
18
+ date: 2010-07-01 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency