summary refs log tree commit
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-10-03 14:47:55 -0700
committerraggi <jftucker@gmail.com>2010-10-03 20:53:52 -0300
commita2e420e1d2730487c95e1d9e5471a28e5c6cf32e (patch)
tree41cbb21e1456aeb0acb0a6764808514f0f559b63
parentf69bd1a7fe76d51f324d0299fdb4b4c906602d2e (diff)
downloadrack-a2e420e1d2730487c95e1d9e5471a28e5c6cf32e.tar.gz
Move sid initialization to another method so it can be overwritten by other frameworks.
Signed-off-by: raggi <jftucker@gmail.com>
-rw-r--r--lib/rack/session/abstract/id.rb11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/rack/session/abstract/id.rb b/lib/rack/session/abstract/id.rb
index 1f85d616..9cfdbb16 100644
--- a/lib/rack/session/abstract/id.rb
+++ b/lib/rack/session/abstract/id.rb
@@ -180,9 +180,7 @@ module Rack
           @default_options = self.class::DEFAULT_OPTIONS.merge(options)
           @key = options[:key] || "rack.session"
           @cookie_only = @default_options.delete(:cookie_only)
-          @sid_secure = @default_options[:secure_random]
-          @sid_template = "%0#{@default_options[:sidbits] / 4}x"
-          @sid_rand_width = (2**@default_options[:sidbits] - 1)
+          initialize_sid
         end
 
         def call(env)
@@ -197,6 +195,13 @@ module Rack
 
         private
 
+        def initialize_sid
+          sidbits = @default_options.delete(:sidbits)
+          @sid_secure = @default_options.delete(:secure_random)
+          @sid_template = "%0#{sidbits / 4}x"
+          @sid_rand_width = (2**sidbits - 1)
+        end
+
         # Generate a new session id using Ruby #rand.  The size of the
         # session id is controlled by the :sidbits option.
         # Monkey patch this to use custom methods for session id generation.