redis-store 0.3.9 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of redis-store might be problematic. Click here for more details.

data/Gemfile CHANGED
@@ -1,15 +1,29 @@
1
1
  source :gemcutter
2
- gem "redis", "1.0.5"
2
+ gem "redis", ">= 2.0.0"
3
3
 
4
- # testing gems
5
- group :testing do
4
+ group :development do
5
+ gem "jeweler"
6
+ gem "git"
7
+ end
8
+
9
+ group :development, :test, :rails3 do
6
10
  gem "ruby-debug"
7
11
  gem "rspec"
8
- gem "rack", "1.0.0"
9
12
  gem "rack-cache"
10
- gem "activesupport", "2.3.5"
11
- gem "actionpack", "2.3.5"
12
13
  gem "merb"
13
- gem "jeweler"
14
- gem "git"
14
+ gem "methopara" if RUBY_VERSION.match /1\.9/
15
+ end
16
+
17
+ if ENV["REDIS_STORE_ENV"] == "rails3"
18
+ group :rails3 do
19
+ gem "rack", "1.1.0"
20
+ gem "activesupport", "3.0.0.beta4"
21
+ gem "actionpack", "3.0.0.beta4"
22
+ end
23
+ else
24
+ group :test do
25
+ gem "rack", "1.0.0"
26
+ gem "activesupport", "2.3.5"
27
+ gem "actionpack", "2.3.5"
28
+ end
15
29
  end
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009-2010 Luca Guidi
1
+ Copyright (c) 2010 Luca Guidi
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -4,29 +4,38 @@
4
4
 
5
5
  Download and install Redis from [http://code.google.com/p/redis/](http://code.google.com/p/redis/)
6
6
 
7
- curl -OL http://redis.googlecode.com/files/redis-1.2.5.tar.gz
8
- tar -zxvf redis-1.2.5.tar.gz
9
- mv redis-1.2.5 redis
7
+ wget http://redis.googlecode.com/files/redis-2.0.0-rc1.tar.gz
8
+ tar -zxf redis-2.0.0-rc1.tar.gz
9
+ mv redis-2.0.0-rc1 redis
10
10
  cd redis
11
11
  make
12
12
 
13
- Install the gems
13
+ Install the gem
14
14
 
15
- sudo gem install redis redis-store
15
+ sudo gem install redis-store
16
16
 
17
17
  ## Cache store
18
18
 
19
19
  Provides a cache store for your Ruby web framework of choice.
20
20
 
21
- ### Rails
21
+ ### Rails 2.x
22
22
 
23
- config.gem "redis-store", :source => "http://gemcutter.org", :lib => "redis-store"
24
- require "redis-store"
23
+ config.gem "redis-store"
24
+ config.cache_store = :redis_store
25
+
26
+ ### Rails 3.x
27
+
28
+ # Gemfile
29
+ gem 'rails', '3.0.0.beta4'
30
+ gem 'redis'
31
+ gem 'redis-store', '1.0.0.beta1'
32
+
33
+ # config/environments/production.rb
25
34
  config.cache_store = :redis_store
26
35
 
27
36
  ### Merb
28
37
 
29
- dependency "redis-store", "0.3.9"
38
+ dependency "redis-store", "1.0.0.beta1"
30
39
  dependency("merb-cache", merb_gems_version) do
31
40
  Merb::Cache.setup do
32
41
  register(:redis, Merb::Cache::RedisStore, :servers => ["127.0.0.1:6379"])
@@ -56,14 +65,24 @@ Provides a Redis store for Rack::Session. See [http://rack.rubyforge.org/doc/Rac
56
65
  use Rack::Session::Redis
57
66
  run Application.new
58
67
 
59
- ### Rails
68
+ ### Rails 2.x
60
69
 
61
70
  config.gem "redis-store"
62
71
  ActionController::Base.session_store = :redis_session_store
63
72
 
73
+ ### Rails 3.x
74
+
75
+ # Gemfile
76
+ gem 'rails', '3.0.0.beta4'
77
+ gem 'redis'
78
+ gem 'redis-store', '1.0.0.beta1'
79
+
80
+ # config/initializers/session_store.rb
81
+ Rails.application.config.session_store :redis_session_store
82
+
64
83
  ### Merb
65
84
 
66
- dependency "redis-store", "0.3.9"
85
+ dependency "redis-store", "1.0.0.beta1"
67
86
  Merb::Config.use do |c|
68
87
  c[:session_store] = "redis"
69
88
  end
@@ -104,9 +123,11 @@ Provides a Redis store for HTTP caching. See [http://github.com/rtomayko/rack-ca
104
123
  git clone git://github.com/jodosha/redis-store.git
105
124
  cd redis-store
106
125
  bundle install
126
+ REDIS_STORE_ENV=rails3 bundle install # to install Rails 3.x gems
107
127
  rake dtach:install
108
128
  rake redis:install
109
129
  rake
130
+ REDIS_STORE_ENV=rails3 rake # to test against Rails 3.x
110
131
 
111
132
  If you are on **Snow Leopard** you have to run `env ARCHFLAGS="-arch x86_64" bundle install`
112
133
 
data/Rakefile CHANGED
@@ -17,6 +17,7 @@ begin
17
17
  gemspec.homepage = "http://github.com/jodosha/redis-store"
18
18
  gemspec.authors = [ "Luca Guidi" ]
19
19
  gemspec.executables = [ ]
20
+ gemspec.add_dependency "redis", ">= 2.0.0"
20
21
  end
21
22
 
22
23
  Jeweler::GemcutterTasks.new
@@ -59,6 +60,12 @@ namespace :redis_cluster do
59
60
  end
60
61
  end
61
62
 
63
+ namespace :bundle do
64
+ task :clean do
65
+ system "rm -rf ~/.bundle/ ~/.gem/ .bundle/ Gemfile.lock"
66
+ end
67
+ end
68
+
62
69
  # courtesy of http://github.com/ezmobius/redis-rb team
63
70
  load "tasks/redis.tasks.rb"
64
71
  def invoke_with_redis_cluster(task_name)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.9
1
+ 1.0.0.beta1
@@ -1,18 +1,6 @@
1
- module ActiveSupport
1
+ module RedisStore
2
2
  module Cache
3
- class RedisStore < Store
4
- # Instantiate the store.
5
- #
6
- # Example:
7
- # RedisStore.new # => host: localhost, port: 6379, db: 0
8
- # RedisStore.new "example.com" # => host: example.com, port: 6379, db: 0
9
- # RedisStore.new "example.com:23682" # => host: example.com, port: 23682, db: 0
10
- # RedisStore.new "example.com:23682/1" # => host: example.com, port: 23682, db: 1
11
- # RedisStore.new "localhost:6379/0", "localhost:6380/0" # => instantiate a cluster
12
- def initialize(*addresses)
13
- @data = Redis::Factory.create(addresses)
14
- end
15
-
3
+ module Rails2
16
4
  def write(key, value, options = nil)
17
5
  super
18
6
  method = options && options[:unless_exist] ? :marshalled_setnx : :marshalled_set
@@ -28,6 +16,49 @@ module ActiveSupport
28
16
  super
29
17
  @data.del key
30
18
  end
19
+ end
20
+
21
+ module Rails3
22
+ protected
23
+ def write_entry(key, entry, options)
24
+ method = options && options[:unless_exist] ? :marshalled_setnx : :marshalled_set
25
+ @data.send method, key, entry, options
26
+ end
27
+
28
+ def read_entry(key, options)
29
+ entry = @data.marshalled_get key, options
30
+ if entry
31
+ entry.is_a?(ActiveSupport::Cache::Entry) ? entry : ActiveSupport::Cache::Entry.new(entry)
32
+ end
33
+ end
34
+
35
+ def delete_entry(key, options)
36
+ @data.del key
37
+ end
38
+ end
39
+
40
+ module Store
41
+ include RedisStore.rails3? ? Rails3 : Rails2
42
+ end
43
+ end
44
+ end
45
+
46
+ module ActiveSupport
47
+ module Cache
48
+ class RedisStore < Store
49
+ include ::RedisStore::Cache::Store
50
+
51
+ # Instantiate the store.
52
+ #
53
+ # Example:
54
+ # RedisStore.new # => host: localhost, port: 6379, db: 0
55
+ # RedisStore.new "example.com" # => host: example.com, port: 6379, db: 0
56
+ # RedisStore.new "example.com:23682" # => host: example.com, port: 23682, db: 0
57
+ # RedisStore.new "example.com:23682/1" # => host: example.com, port: 23682, db: 1
58
+ # RedisStore.new "localhost:6379/0", "localhost:6380/0" # => instantiate a cluster
59
+ def initialize(*addresses)
60
+ @data = Redis::Factory.create(addresses)
61
+ end
31
62
 
32
63
  def exist?(key, options = nil)
33
64
  super
@@ -91,7 +122,7 @@ module ActiveSupport
91
122
  # Example:
92
123
  # cache.del_matched "rab*"
93
124
  def delete_matched(matcher, options = nil)
94
- super
125
+ log "delete_matched", matcher, options
95
126
  @data.keys(matcher).each { |key| @data.del key }
96
127
  end
97
128
 
@@ -1,61 +1,70 @@
1
- module ActionController
2
- module Session
3
- # Redis session storage for Rails, and for Rails only. Derived from
4
- # the MemCacheStore code, simply dropping in Redis instead.
5
- #
6
- # Options:
7
- # :key => Same as with the other cookie stores, key name
8
- # :secret => Encryption secret for the key
9
- # :host => Redis host name, default is localhost
10
- # :port => Redis port, default is 6379
11
- # :db => Database number, defaults to 0. Useful to separate your session storage from other data
12
- # :key_prefix => Prefix for keys used in Redis, e.g. myapp-. Useful to separate session storage keys visibly from others
13
- # :expire_after => A number in seconds to set the timeout interval for the session. Will map directly to expiry in Redis
1
+ module RedisStore
2
+ module Rack
3
+ module Session
4
+ # Redis session storage for Rails, and for Rails only. Derived from
5
+ # the MemCacheStore code, simply dropping in Redis instead.
6
+ #
7
+ # Options:
8
+ # :key => Same as with the other cookie stores, key name
9
+ # :secret => Encryption secret for the key
10
+ # :host => Redis host name, default is localhost
11
+ # :port => Redis port, default is 6379
12
+ # :db => Database number, defaults to 0. Useful to separate your session storage from other data
13
+ # :key_prefix => Prefix for keys used in Redis, e.g. myapp-. Useful to separate session storage keys visibly from others
14
+ # :expire_after => A number in seconds to set the timeout interval for the session. Will map directly to expiry in Redis
15
+ module Rails
16
+ def initialize(app, options = {})
17
+ # Support old :expires option
18
+ options[:expire_after] ||= options[:expires]
14
19
 
15
- class RedisSessionStore < ActionController::Session::AbstractStore
20
+ super
16
21
 
17
- def initialize(app, options = {})
18
- # Support old :expires option
19
- options[:expire_after] ||= options[:expires]
22
+ @options = { :key_prefix => "" }.update(options)
23
+ servers = [options[:servers]].flatten.compact.map do |server_options|
24
+ {
25
+ :namespace => 'rack:session',
26
+ :host => 'localhost',
27
+ :port => '6379',
28
+ :db => 0
29
+ }.update(Redis::Factory.convert_to_redis_client_options(server_options))
30
+ end
20
31
 
21
- super
22
-
23
- @options = { :key_prefix => "" }.update(options)
24
- servers = [options[:servers]].flatten.compact.map do |server_options|
25
- {
26
- :namespace => 'rack:session',
27
- :host => 'localhost',
28
- :port => '6379',
29
- :db => 0
30
- }.update(Redis::Factory.convert_to_redis_client_options(server_options))
32
+ @pool = Redis::Factory.create(*servers)
31
33
  end
32
34
 
33
- @pool = Redis::Factory.create(*servers)
34
- end
35
+ private
36
+ def prefixed(sid)
37
+ "#{@options[:key_prefix]}#{sid}"
38
+ end
35
39
 
36
- private
37
- def prefixed(sid)
38
- "#{@options[:key_prefix]}#{sid}"
39
- end
40
+ def get_session(env, sid)
41
+ sid ||= generate_sid
42
+ begin
43
+ session = @pool.marshalled_get(prefixed(sid)) || {}
44
+ rescue Errno::ECONNREFUSED
45
+ session = {}
46
+ end
47
+ [sid, session]
48
+ end
40
49
 
41
- def get_session(env, sid)
42
- sid ||= generate_sid
43
- begin
44
- session = @pool.marshalled_get(prefixed(sid)) || {}
50
+ def set_session(env, sid, session_data)
51
+ options = env['rack.session.options']
52
+ @pool.marshalled_set(prefixed(sid), session_data, options)
53
+ return true
45
54
  rescue Errno::ECONNREFUSED
46
- session = {}
55
+ return false
47
56
  end
48
- [sid, session]
49
- end
50
-
51
- def set_session(env, sid, session_data)
52
- options = env['rack.session.options']
53
- @pool.marshalled_set(prefixed(sid), session_data, options)
54
- return true
55
- rescue Errno::ECONNREFUSED
56
- return false
57
57
  end
58
-
59
58
  end
60
59
  end
61
60
  end
61
+
62
+ unless defined?(ActionDispatch) # rails 2.3.x
63
+ class ActionController::Session::RedisSessionStore < ActionController::Session::AbstractStore
64
+ include RedisStore::Rack::Session::Rails
65
+ end
66
+ else # rails 3.x
67
+ class ActionDispatch::Session::RedisSessionStore < ActionDispatch::Session::AbstractStore
68
+ include RedisStore::Rack::Session::Rails
69
+ end
70
+ end
@@ -13,6 +13,16 @@ class Redis
13
13
  ring.nodes
14
14
  end
15
15
 
16
- alias_method :flushdb, :delete_cloud! if respond_to?(:delete_cloud!)
16
+ def marshalled_set(key, val, options = nil)
17
+ node_for(key).marshalled_set(key, val, options)
18
+ end
19
+
20
+ def marshalled_get(key, options = nil)
21
+ node_for(key).marshalled_get(key, options)
22
+ end
23
+
24
+ def marshalled_setnx(key, value, options = nil)
25
+ node_for(key).marshalled_setnx(key, value, options)
26
+ end
17
27
  end
18
28
  end
@@ -1,9 +1,9 @@
1
1
  class Redis
2
- class MarshaledClient < Client
2
+ class MarshaledClient < self
3
3
  def marshalled_set(key, val, options = nil)
4
4
  val = marshal_value(val, options)
5
- if expires_in = expires_in(options)
6
- set_with_expire key, val, expires_in
5
+ if ttl = expires_in(options)
6
+ setex key, ttl, val
7
7
  else
8
8
  set key, val
9
9
  end
@@ -26,11 +26,15 @@ class Redis
26
26
  end
27
27
 
28
28
  def marshalled_get(key, options = nil)
29
- result = call_command([:get, key])
29
+ result = @client.call(:get, key)
30
30
  result = Marshal.load result if unmarshal?(result, options)
31
31
  result
32
32
  end
33
33
 
34
+ def to_s
35
+ "Redis Client connected to #{@client.host}:#{@client.port} against DB #{@client.db}"
36
+ end
37
+
34
38
  private
35
39
  def marshal_value(val, options)
36
40
  raw?(options) ? val : Marshal.dump(val)
data/lib/redis-store.rb CHANGED
@@ -1,8 +1,15 @@
1
1
  require "redis"
2
- require "redis/namespace"
2
+ require "redis/distributed"
3
3
  require "redis/factory"
4
4
  require "redis/marshaled_client"
5
5
  require "redis/distributed_marshaled"
6
+ require "redis_store/version"
7
+
8
+ module RedisStore
9
+ def self.rails3? #:nodoc:
10
+ defined?(::Rails) && ::Rails.version =~ /3\.0\.0/
11
+ end
12
+ end
6
13
 
7
14
  # Cache store
8
15
  if defined?(Sinatra)
@@ -0,0 +1,10 @@
1
+ module RedisStore
2
+ module VERSION #:nodoc:
3
+ MAJOR = 1
4
+ MINOR = 0
5
+ TINY = 0
6
+ BUILD = "beta1"
7
+
8
+ STRING = [MAJOR, MINOR, TINY, BUILD].join('.')
9
+ end
10
+ end
data/redis-store.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{redis-store}
8
- s.version = "0.3.9"
8
+ s.version = "1.0.0.beta1"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Luca Guidi"]
12
- s.date = %q{2010-08-06}
12
+ s.date = %q{2010-06-09}
13
13
  s.description = %q{Rack::Session, Rack::Cache and cache Redis stores for Ruby web frameworks.}
14
14
  s.email = %q{guidi.luca@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
18
18
  s.files = [
19
19
  ".gitignore",
20
20
  "Gemfile",
21
- "Gemfile.lock",
22
21
  "MIT-LICENSE",
23
22
  "README.md",
24
23
  "Rakefile",
@@ -35,7 +34,7 @@ Gem::Specification.new do |s|
35
34
  "lib/redis/distributed_marshaled.rb",
36
35
  "lib/redis/factory.rb",
37
36
  "lib/redis/marshaled_client.rb",
38
- "lib/redis/namespace.rb",
37
+ "lib/redis_store/version.rb",
39
38
  "redis-store.gemspec",
40
39
  "spec/cache/merb/redis_store_spec.rb",
41
40
  "spec/cache/rails/redis_session_store_spec.rb",
@@ -51,6 +50,7 @@ Gem::Specification.new do |s|
51
50
  "spec/redis/distributed_marshaled_redis_spec.rb",
52
51
  "spec/redis/factory_spec.rb",
53
52
  "spec/redis/marshaled_client_spec.rb",
53
+ "spec/redis_store/version_spec.rb",
54
54
  "spec/spec_helper.rb",
55
55
  "tasks/redis.tasks.rb"
56
56
  ]
@@ -70,6 +70,7 @@ Gem::Specification.new do |s|
70
70
  "spec/redis/distributed_marshaled_redis_spec.rb",
71
71
  "spec/redis/factory_spec.rb",
72
72
  "spec/redis/marshaled_client_spec.rb",
73
+ "spec/redis_store/version_spec.rb",
73
74
  "spec/spec_helper.rb"
74
75
  ]
75
76
 
@@ -78,9 +79,12 @@ Gem::Specification.new do |s|
78
79
  s.specification_version = 3
79
80
 
80
81
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
82
+ s.add_runtime_dependency(%q<redis>, [">= 2.0.0"])
81
83
  else
84
+ s.add_dependency(%q<redis>, [">= 2.0.0"])
82
85
  end
83
86
  else
87
+ s.add_dependency(%q<redis>, [">= 2.0.0"])
84
88
  end
85
89
  end
86
90
 
@@ -1,77 +1,75 @@
1
1
  require File.join(File.dirname(__FILE__), "/../../spec_helper")
2
+ RAILS_SESSION_STORE_CLASS = RedisStore.rails3? ? ActionDispatch::Session::RedisSessionStore : ActionController::Session::RedisSessionStore
2
3
 
3
- module ActionController
4
- module Session
5
- describe "ActionController::Session::RedisSessionStore" do
6
- attr_reader :app
7
- before(:each) do
8
- @app = Object.new
9
- @store = ActionController::Session::RedisSessionStore.new(app)
10
- @dstore = ActionController::Session::RedisSessionStore.new app, :servers => ["localhost:6380/1", "localhost:6381/1"]
11
- @rabbit = OpenStruct.new :name => "bunny"
12
- @white_rabbit = OpenStruct.new :color => "white"
13
- with_store_management do |store|
14
- class << store
15
- attr_reader :pool
16
- public :get_session, :set_session
17
- end
18
- store.set_session({'rack.session.options' => {}}, "rabbit", @rabbit)
19
- store.pool.del "counter"
20
- store.pool.del "rub-a-dub"
21
- end
4
+ describe RAILS_SESSION_STORE_CLASS do
5
+ attr_reader :app
6
+
7
+ before :each do
8
+ @app = Object.new
9
+ @store = RAILS_SESSION_STORE_CLASS.new(app)
10
+ @dstore = RAILS_SESSION_STORE_CLASS.new app, :servers => ["localhost:6380/1", "localhost:6381/1"]
11
+ @rabbit = OpenStruct.new :name => "bunny"
12
+ @white_rabbit = OpenStruct.new :color => "white"
13
+ with_store_management do |store|
14
+ class << store
15
+ attr_reader :pool
16
+ public :get_session, :set_session
22
17
  end
18
+ store.set_session({'rack.session.options' => {}}, "rabbit", @rabbit)
19
+ store.pool.del "counter"
20
+ store.pool.del "rub-a-dub"
21
+ end
22
+ end
23
23
 
24
- it "should accept connection params" do
25
- redis = instantiate_store
26
- redis.to_s.should == "Redis Client connected to 127.0.0.1:6379 against DB 0"
24
+ it "should accept connection params" do
25
+ redis = instantiate_store
26
+ redis.to_s.should == "Redis Client connected to 127.0.0.1:6379 against DB 0"
27
27
 
28
- redis = instantiate_store :servers => "localhost"
29
- redis.to_s.should == "Redis Client connected to localhost:6379 against DB 0"
28
+ redis = instantiate_store :servers => "localhost"
29
+ redis.to_s.should == "Redis Client connected to localhost:6379 against DB 0"
30
30
 
31
- redis = instantiate_store :servers => "localhost:6380"
32
- redis.to_s.should == "Redis Client connected to localhost:6380 against DB 0"
31
+ redis = instantiate_store :servers => "localhost:6380"
32
+ redis.to_s.should == "Redis Client connected to localhost:6380 against DB 0"
33
33
 
34
- redis = instantiate_store :servers => "localhost:6380/13"
35
- redis.to_s.should == "Redis Client connected to localhost:6380 against DB 13"
36
- end
34
+ redis = instantiate_store :servers => "localhost:6380/13"
35
+ redis.to_s.should == "Redis Client connected to localhost:6380 against DB 13"
36
+ end
37
37
 
38
- it "should instantiate a ring" do
39
- store = instantiate_store
40
- store.should be_kind_of(Redis::MarshaledClient)
41
- store = instantiate_store :servers => ["localhost:6379/0", "localhost:6379/1"]
42
- store.should be_kind_of(Redis::DistributedMarshaled)
43
- end
38
+ it "should instantiate a ring" do
39
+ store = instantiate_store
40
+ store.should be_kind_of(Redis::MarshaledClient)
41
+ store = instantiate_store :servers => ["localhost:6379/0", "localhost:6379/1"]
42
+ store.should be_kind_of(Redis::DistributedMarshaled)
43
+ end
44
44
 
45
- it "should read the data" do
46
- with_store_management do |store|
47
- store.get_session({}, "rabbit").should === ["rabbit", @rabbit]
48
- end
49
- end
45
+ it "should read the data" do
46
+ with_store_management do |store|
47
+ store.get_session({}, "rabbit").should === ["rabbit", @rabbit]
48
+ end
49
+ end
50
50
 
51
- it "should write the data" do
52
- with_store_management do |store|
53
- store.set_session({"rack.session.options" => {}}, "rabbit", @white_rabbit)
54
- store.get_session({}, "rabbit").should === ["rabbit", @white_rabbit]
55
- end
56
- end
51
+ it "should write the data" do
52
+ with_store_management do |store|
53
+ store.set_session({"rack.session.options" => {}}, "rabbit", @white_rabbit)
54
+ store.get_session({}, "rabbit").should === ["rabbit", @white_rabbit]
55
+ end
56
+ end
57
57
 
58
- it "should write the data with expiration time" do
59
- with_store_management do |store|
60
- store.set_session({"rack.session.options" => {:expires_in => 1.second}}, "rabbit", @white_rabbit)
61
- store.get_session({}, "rabbit").should === ["rabbit", @white_rabbit]; sleep 2
62
- store.get_session({}, "rabbit").should === ["rabbit", {}]
63
- end
64
- end
58
+ it "should write the data with expiration time" do
59
+ with_store_management do |store|
60
+ store.set_session({"rack.session.options" => {:expires_in => 1.second}}, "rabbit", @white_rabbit)
61
+ store.get_session({}, "rabbit").should === ["rabbit", @white_rabbit]; sleep 2
62
+ store.get_session({}, "rabbit").should === ["rabbit", {}]
63
+ end
64
+ end
65
65
 
66
- private
67
- def instantiate_store(params={})
68
- ActionController::Session::RedisSessionStore.new(app, params).instance_variable_get(:@pool)
69
- end
66
+ private
67
+ def instantiate_store(params={})
68
+ RAILS_SESSION_STORE_CLASS.new(app, params).instance_variable_get(:@pool)
69
+ end
70
70
 
71
- def with_store_management
72
- yield @store
73
- yield @dstore
74
- end
71
+ def with_store_management
72
+ yield @store
73
+ yield @dstore
75
74
  end
76
- end
77
75
  end