redis-rack 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1119fd71b4e9e7dcf20063b71cfe7edaf3243431
4
- data.tar.gz: 2c7f98fa64c1d3779ae0b9ef558d489f5f6da2e7
3
+ metadata.gz: 241656b9de13ca2a3a51554244fd812c376f47a3
4
+ data.tar.gz: 1be1cc86120b1cddffd41d55a826154cdd3878ed
5
5
  SHA512:
6
- metadata.gz: 156ed7ff0634c5069035f3725b953419ca8f01856cf19f8d49003fb8a0deb4acdacfc7256b1b8a7d0b5327546b4e6f7db60524b6eff78175e8d2415c8cd55b50
7
- data.tar.gz: 77240b05b6c74701ce275c930fa9a9002e8288ddf6b114960bf700af4555fd24cf396eeafafcd677af54f79e7b49eaf7bdf2d788943780f8d1dbc0768ec25ea1
6
+ metadata.gz: c269d47a297d858229722d566df37c09eaf0624e799dcbb9e7840fa069a2a9b3de710fb68dbce5886d187f53bc38eb594d0782e6fc3903514743ee696feffad6
7
+ data.tar.gz: d644ed731fbb18bb1b793743e46d29af225946ea72560e81946f2484f081efb6466a3ec072291ee60e5265380f3ca846c0aa27cf3cfe92ff07d6739c572789d6
data/.gitignore CHANGED
@@ -2,3 +2,5 @@ Gemfile.lock
2
2
  *.gem
3
3
  tmp/
4
4
  stdout
5
+ gemfiles/vendor
6
+ gemfiles/*.gemfile.lock
@@ -10,3 +10,7 @@ matrix:
10
10
  allow_failures:
11
11
  - rvm: jruby-head
12
12
  - rvm: ruby-head
13
+ # Put this in your .travis.yml
14
+ gemfile:
15
+ - gemfiles/rack_2.gemfile
16
+ - gemfiles/rack_1.gemfile
@@ -0,0 +1,7 @@
1
+ appraise 'rack-2' do
2
+ gem 'rack', '~> 2'
3
+ end
4
+
5
+ appraise 'rack-1' do
6
+ gem 'rack', '~> 1'
7
+ end
data/Rakefile CHANGED
@@ -2,3 +2,9 @@ require 'bundler/setup'
2
2
  require 'rake'
3
3
  require 'bundler/gem_tasks'
4
4
  require 'redis-store/testing/tasks'
5
+
6
+ task :all do
7
+ Dir["gemfiles/*.gemfile"].reject { |p| p =~ /\.lock\Z/ }.each do |gemfile|
8
+ sh "BUNDLE_GEMFILE=#{gemfile} bundle exec rake"
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application 'appraisal' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("appraisal", "appraisal")
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application 'rake' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("rake", "rake")
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rack", "~> 1"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rack", "~> 2"
6
+
7
+ gemspec :path => "../"
@@ -23,9 +23,9 @@ module Rack
23
23
  pool_options[:size] = options[:pool_size] if options[:pool_size]
24
24
  pool_options[:timeout] = options[:pool_timeout] if options[:pool_timeout]
25
25
  @pooled = true
26
- ::ConnectionPool.new(pool_options) { ::Redis::Store::Factory.create(@default_options[:redis_server]) }
26
+ ::ConnectionPool.new(pool_options) { ::Redis::Store::Factory.create(@default_options[:redis_server]) }
27
27
  else
28
- @default_options.has_key?(:redis_store) ?
28
+ @default_options.has_key?(:redis_store) ?
29
29
  @default_options[:redis_store] :
30
30
  ::Redis::Store::Factory.create(@default_options[:redis_server])
31
31
 
@@ -70,8 +70,12 @@ module Rack
70
70
  end
71
71
  end
72
72
 
73
+ def threadsafe?
74
+ @default_options.fetch(:threadsafe, true)
75
+ end
76
+
73
77
  def with_lock(env, default=nil)
74
- @mutex.lock if env['rack.multithread']
78
+ @mutex.lock if env['rack.multithread'] && threadsafe?
75
79
  yield
76
80
  rescue Errno::ECONNREFUSED
77
81
  if $VERBOSE
@@ -94,4 +98,3 @@ module Rack
94
98
  end
95
99
  end
96
100
  end
97
-
@@ -1,6 +1,6 @@
1
1
  class Redis
2
2
  module Rack
3
- VERSION = '2.0.2'
3
+ VERSION = '2.0.3'
4
4
  end
5
5
  end
6
6
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_runtime_dependency 'redis-store', ['< 1.4', '>= 1.2']
22
+ s.add_runtime_dependency 'redis-store', ['< 2', '>= 1.2']
23
23
  s.add_runtime_dependency 'rack', '>= 1.5', '< 3'
24
24
 
25
25
  s.add_development_dependency 'rake', '~> 10'
@@ -28,5 +28,6 @@ Gem::Specification.new do |s|
28
28
  s.add_development_dependency 'minitest', '~> 5'
29
29
  s.add_development_dependency 'redis-store-testing'
30
30
  s.add_development_dependency 'connection_pool', '~> 1.2.0'
31
+ s.add_development_dependency 'appraisal'
31
32
  end
32
33
 
@@ -53,7 +53,6 @@ describe Rack::Session::Redis do
53
53
  session_store.with { |connection| connection.to_s.must_match(/127\.0\.0\.1:6380 against DB 1$/) }
54
54
  end
55
55
 
56
-
57
56
  it "can use a supplied pool" do
58
57
  session_store = Rack::Session::Redis.new(incrementor, pool: ::ConnectionPool.new(size: 1, timeout: 1) { ::Redis::Store::Factory.create("redis://127.0.0.1:6380/1")})
59
58
  session_store.pool.class.must_equal ::ConnectionPool
@@ -82,6 +81,38 @@ describe Rack::Session::Redis do
82
81
  pool.pool.to_s.must_match(/127\.0\.0\.1:6380 against DB 1$/)
83
82
  end
84
83
 
84
+ it "is threadsafe by default" do
85
+ sesion_store = Rack::Session::Redis.new(incrementor)
86
+ sesion_store.threadsafe?.must_equal(true)
87
+ end
88
+
89
+ it "locks the store mutex" do
90
+ mutex = Mutex.new
91
+ mutex.expects(:lock).once
92
+ sesion_store = Rack::Session::Redis.new(incrementor)
93
+ sesion_store.instance_variable_set(:@mutex, mutex)
94
+ was_yielded = false
95
+ sesion_store.with_lock({'rack.multithread' => true}) { was_yielded = true}
96
+ was_yielded.must_equal(true)
97
+ end
98
+
99
+ describe "threadsafe disabled" do
100
+ it "can have the global lock disabled" do
101
+ sesion_store = Rack::Session::Redis.new(incrementor, :threadsafe => false)
102
+ sesion_store.threadsafe?.must_equal(false)
103
+ end
104
+
105
+ it "does not lock the store mutex" do
106
+ mutex = Mutex.new
107
+ mutex.expects(:lock).never
108
+ sesion_store = Rack::Session::Redis.new(incrementor, :threadsafe => false)
109
+ sesion_store.instance_variable_set(:@mutex, mutex)
110
+ was_yielded = false
111
+ sesion_store.with_lock({'rack.multithread' => true}) { was_yielded = true}
112
+ was_yielded.must_equal(true)
113
+ end
114
+ end
115
+
85
116
  it "creates a new cookie" do
86
117
  with_pool_management(incrementor) do |pool|
87
118
  res = Rack::MockRequest.new(pool).get("/")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-13 00:00:00.000000000 Z
11
+ date: 2017-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis-store
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - "<"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.4'
19
+ version: '2'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: '1.2'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - "<"
28
28
  - !ruby/object:Gem::Version
29
- version: '1.4'
29
+ version: '2'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: '1.2'
@@ -134,20 +134,41 @@ dependencies:
134
134
  - - "~>"
135
135
  - !ruby/object:Gem::Version
136
136
  version: 1.2.0
137
+ - !ruby/object:Gem::Dependency
138
+ name: appraisal
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
137
151
  description: Redis Store for Rack applications
138
152
  email:
139
153
  - me@lucaguidi.com
140
- executables: []
154
+ executables:
155
+ - appraisal
156
+ - rake
141
157
  extensions: []
142
158
  extra_rdoc_files: []
143
159
  files:
144
160
  - ".gitignore"
145
161
  - ".ruby-version"
146
162
  - ".travis.yml"
163
+ - Appraisals
147
164
  - Gemfile
148
165
  - MIT-LICENSE
149
166
  - README.md
150
167
  - Rakefile
168
+ - bin/appraisal
169
+ - bin/rake
170
+ - gemfiles/rack_1.gemfile
171
+ - gemfiles/rack_2.gemfile
151
172
  - lib/rack/session/redis.rb
152
173
  - lib/redis-rack.rb
153
174
  - lib/redis/rack/version.rb
@@ -174,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
195
  version: '0'
175
196
  requirements: []
176
197
  rubyforge_project: redis-rack
177
- rubygems_version: 2.6.6
198
+ rubygems_version: 2.6.12
178
199
  signing_key:
179
200
  specification_version: 4
180
201
  summary: Redis Store for Rack