redis-activesupport 5.0.7 → 5.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1a846eea37c0ff4100e7d31590cf05e621192ae2
4
- data.tar.gz: b02058a9fc69299ec9306796df202d64e1c6f4d7
2
+ SHA256:
3
+ metadata.gz: 1701d0f906647612a49e32325e5e3d4cef491fa6e4742b145482a7ad3f2b97b8
4
+ data.tar.gz: 4fcc1fa74965a7d624aa505874af54c2f49f379357deb5c0ce59efb1e4c7a91e
5
5
  SHA512:
6
- metadata.gz: ff311cba47a47387cab50b61b6f62f3f01428828e0c1a446040e752fdebc9e3494317413e52d7058805d162fbeccc5c4c6c7d5b2fbd2d632efaf8720266a72e4
7
- data.tar.gz: 9f6b6d1a4c639ded371d22afeee967896a0917644cf4e42cc321c39e6ac071ffd0b1dc0b958d0a0db6311f81e00818d1fe7e9a1dafbc7bc5f350ed614edd4a4c
6
+ metadata.gz: '08fed28507f699223f4fd6ccc344a87d81f135e23837effc913353a8790f1db867dac62e54df107346b4eb01e441873b16675085714673c7fa1efcf9078a62e3'
7
+ data.tar.gz: 0527ae9cd279eb6b23a0519593a218ad46bc2e2b31cdef48f79571d1f1792b58f2cd92122d7e4b4c2417ab027240cccce47b23435c32f339dcd2d852c52d7738
@@ -0,0 +1,2 @@
1
+ assignees:
2
+ - tubbo
data/.travis.yml CHANGED
@@ -1,30 +1,47 @@
1
1
  language: ruby
2
- script: 'bundle exec rake'
2
+ script: bundle exec rake
3
3
  rvm:
4
- - 2.0
5
- - 2.1
6
- - 2.2
7
- - 2.3
8
- - 2.4
9
- - ruby-head
10
- - jruby-head
4
+ - 2.0
5
+ - 2.1
6
+ - 2.3
7
+ - 2.4
8
+ - 2.5
9
+ - 2.6
10
+ - ruby-head
11
+ - jruby-head
11
12
  services:
12
- - redis-server
13
+ - redis-server
13
14
  matrix:
14
15
  allow_failures:
15
- - rvm: jruby-head
16
- - rvm: ruby-head
17
- - rvm: 2.0
18
- gemfile: gemfiles/Gemfile.activesupport-5.x
19
- - rvm: 2.1
20
- gemfile: gemfiles/Gemfile.activesupport-5.x
16
+ - rvm: jruby-head
17
+ - rvm: ruby-head
18
+ exclude:
19
+ - rvm: 2.0
20
+ gemfile: gemfiles/activesupport_50.gemfile
21
+ - rvm: 2.1
22
+ gemfile: gemfiles/activesupport_50.gemfile
23
+ - rvm: 2.0
24
+ gemfile: gemfiles/activesupport_51.gemfile
25
+ - rvm: 2.1
26
+ gemfile: gemfiles/activesupport_51.gemfile
27
+ - rvm: 2.0
28
+ gemfile: gemfiles/activesupport_52.gemfile
29
+ - rvm: 2.1
30
+ gemfile: gemfiles/activesupport_52.gemfile
21
31
  notifications:
22
32
  webhooks: https://www.travisbuddy.com/
23
33
  on_success: never
24
- # Put this in your .travis.yml
25
34
  gemfile:
26
- - gemfiles/activesupport_3.gemfile
27
- - gemfiles/activesupport_4.gemfile
28
- - gemfiles/activesupport_50.gemfile
29
- - gemfiles/activesupport_51.gemfile
30
- - gemfiles/activesupport_52.gemfile
35
+ - gemfiles/activesupport_3.gemfile
36
+ - gemfiles/activesupport_4.gemfile
37
+ - gemfiles/activesupport_50.gemfile
38
+ - gemfiles/activesupport_51.gemfile
39
+ - gemfiles/activesupport_52.gemfile
40
+ deploy:
41
+ provider: rubygems
42
+ api_key:
43
+ secure: VHWLUgCtqlKjeS5uGOxS4tnEUSPiapyvBvgSpr+FUeQnjAE9jgJvz+rAmiNy/pp8fAhjH5FdyIUXuh2rE2sWcBYrOa1rCvrc7eBHdnpZ4U7ULJwQKhC/4dOE33ClaZX2pex4pv12I2218ZH5TsqdmQ0Ci0ccfNZJv0vs+IFP+kQ=
44
+ gem: redis-activesupport
45
+ on:
46
+ tags: true
47
+ repo: redis-store/redis-activesupport
data/CODEOWNERS ADDED
@@ -0,0 +1 @@
1
+ * @tubbo
data/README.md CHANGED
@@ -1,3 +1,11 @@
1
+ # This gem is in LTS mode.
2
+
3
+ Rails 5.2.0 [includes a Redis cache store out of the
4
+ box](https://github.com/rails/rails/pull/31134), so you don't really
5
+ need this anymore if you're generating a new Rails application. We
6
+ are no longer accepting new features for this gem, only security
7
+ updates will be considered for new pull requests.
8
+
1
9
  # Redis stores for ActiveSupport
2
10
 
3
11
  __`redis-activesupport`__ provides a cache for __ActiveSupport__.
@@ -9,14 +17,6 @@ For information on how to use this library in a Rails app, see the [documentatio
9
17
 
10
18
  If, for some reason, you're using `ActiveSupport::Cache` and not in a Rails app, read on to learn how to install/use this gem by itself!
11
19
 
12
- ## A quick note about Rails 5.2
13
-
14
- Rails 5.2.0 [includes a Redis cache store out of the
15
- box](https://github.com/rails/rails/pull/31134), so you don't really
16
- need this anymore if you're generating a new Rails application. We
17
- are no longer accepting new features for this gem, only pull requests
18
- for security and compatibility fixes will be accepted.
19
-
20
20
  ## Installation
21
21
 
22
22
  ```ruby
@@ -13,6 +13,12 @@ module ActiveSupport
13
13
  Redis::BaseConnectionError
14
14
  ].freeze
15
15
 
16
+ DEFAULT_ERROR_HANDLER = -> (method: nil, returning: nil, exception: nil) do
17
+ if logger
18
+ logger.error { "RedisStore: #{method} failed, returned #{returning.inspect}: #{exception.class}: #{exception.message}" }
19
+ end
20
+ end
21
+
16
22
  attr_reader :data
17
23
 
18
24
  # Instantiate the store.
@@ -24,25 +30,25 @@ module ActiveSupport
24
30
  # RedisStore.new client: Redis.new(url: "redis://127.0.0.1:6380/1")
25
31
  # # => host: localhost, port: 6379, db: 0
26
32
  #
27
- # RedisStore.new "example.com"
33
+ # RedisStore.new "redis://example.com"
28
34
  # # => host: example.com, port: 6379, db: 0
29
35
  #
30
- # RedisStore.new "example.com:23682"
36
+ # RedisStore.new "redis://example.com:23682"
31
37
  # # => host: example.com, port: 23682, db: 0
32
38
  #
33
- # RedisStore.new "example.com:23682/1"
39
+ # RedisStore.new "redis://example.com:23682/1"
34
40
  # # => host: example.com, port: 23682, db: 1
35
41
  #
36
- # RedisStore.new "example.com:23682/1/theplaylist"
42
+ # RedisStore.new "redis://example.com:23682/1/theplaylist"
37
43
  # # => host: example.com, port: 23682, db: 1, namespace: theplaylist
38
44
  #
39
- # RedisStore.new "localhost:6379/0", "localhost:6380/0"
45
+ # RedisStore.new "redis://localhost:6379/0", "redis://localhost:6380/0"
40
46
  # # => instantiate a cluster
41
47
  #
42
- # RedisStore.new "localhost:6379/0", "localhost:6380/0", pool_size: 5, pool_timeout: 10
48
+ # RedisStore.new "redis://localhost:6379/0", "redis://localhost:6380/0", pool_size: 5, pool_timeout: 10
43
49
  # # => use a ConnectionPool
44
50
  #
45
- # RedisStore.new "localhost:6379/0", "localhost:6380/0",
51
+ # RedisStore.new "redis://localhost:6379/0", "redis://localhost:6380/0",
46
52
  # pool: ::ConnectionPool.new(size: 1, timeout: 1) { ::Redis::Store::Factory.create("localhost:6379/0") })
47
53
  # # => supply an existing connection pool (e.g. for use with redis-sentinel or redis-failover)
48
54
  def initialize(*addresses)
@@ -65,16 +71,18 @@ module ActiveSupport
65
71
  ::Redis::Store::Factory.create(*addresses, @options)
66
72
  end
67
73
 
74
+ @error_handler = @options[:error_handler] || DEFAULT_ERROR_HANDLER
75
+
68
76
  super(@options)
69
77
  end
70
78
 
71
79
  def write(name, value, options = nil)
72
- options = merged_options(options)
73
- instrument(:write, name, options) do |payload|
74
- entry = options[:raw].present? ? value : Entry.new(value, options)
80
+ options = merged_options(options.to_h.symbolize_keys)
81
+ instrument(:write, name, options) do |_payload|
75
82
  if options[:expires_in].present? && options[:race_condition_ttl].present? && options[:raw].blank?
76
83
  options[:expires_in] = options[:expires_in].to_f + options[:race_condition_ttl].to_f
77
84
  end
85
+ entry = options[:raw].present? ? value : Entry.new(value, **options)
78
86
  write_entry(normalize_key(name, options), entry, options)
79
87
  end
80
88
  end
@@ -91,14 +99,13 @@ module ActiveSupport
91
99
  def delete_matched(matcher, options = nil)
92
100
  options = merged_options(options)
93
101
  instrument(:delete_matched, matcher.inspect) do
94
- matcher = key_matcher(matcher, options)
95
- begin
96
- with do |store|
97
- !(keys = store.keys(matcher)).empty? && store.del(*keys)
102
+ failsafe(:read_multi, returning: false) do
103
+ matcher = key_matcher(matcher, options)
104
+ begin
105
+ with do |store|
106
+ !(keys = store.keys(matcher)).empty? && store.del(*keys)
107
+ end
98
108
  end
99
- rescue *ERRORS_TO_RESCUE
100
- raise if raise_errors?
101
- false
102
109
  end
103
110
  end
104
111
  end
@@ -118,16 +125,15 @@ module ActiveSupport
118
125
  args.flatten!
119
126
 
120
127
  instrument(:read_multi, names) do |payload|
121
- values = with { |c| c.mget(*args) }
122
- values.map! { |v| v.is_a?(ActiveSupport::Cache::Entry) ? v.value : v }
128
+ failsafe(:read_multi, returning: {}) do
129
+ values = with { |c| c.mget(*args) }
130
+ values.map! { |v| v.is_a?(ActiveSupport::Cache::Entry) ? v.value : v }
123
131
 
124
- Hash[names.zip(values)].reject{|k,v| v.nil?}.tap do |result|
125
- payload[:hits] = result.keys if payload
132
+ Hash[names.zip(values)].reject{|k,v| v.nil?}.tap do |result|
133
+ payload[:hits] = result.keys if payload
134
+ end
126
135
  end
127
136
  end
128
- rescue *ERRORS_TO_RESCUE
129
- raise if raise_errors?
130
- {}
131
137
  end
132
138
 
133
139
  def fetch_multi(*names)
@@ -147,7 +153,7 @@ module ActiveSupport
147
153
  memo
148
154
  end
149
155
 
150
- begin
156
+ failsafe(:fetch_multi_write) do
151
157
  with do |c|
152
158
  c.multi do
153
159
  need_writes.each do |name, value|
@@ -155,8 +161,6 @@ module ActiveSupport
155
161
  end
156
162
  end
157
163
  end
158
- rescue *ERRORS_TO_RESCUE
159
- raise if raise_errors?
160
164
  end
161
165
 
162
166
  fetched
@@ -183,10 +187,18 @@ module ActiveSupport
183
187
  #
184
188
  # cache.increment "rabbit"
185
189
  # cache.read "rabbit", :raw => true # => "1"
186
- def increment(key, amount = 1, options = {})
187
- options = merged_options(options)
188
- instrument(:increment, key, :amount => amount) do
189
- with{|c| c.incrby normalize_key(key, options), amount}
190
+ def increment(name, amount = 1, options = {})
191
+ instrument :increment, name, amount: amount do
192
+ failsafe :increment do
193
+ options = merged_options(options)
194
+ key = normalize_key(name, options)
195
+
196
+ with do |c|
197
+ c.incrby(key, amount).tap do
198
+ write_key_expiry(c, key, options)
199
+ end
200
+ end
201
+ end
190
202
  end
191
203
  end
192
204
 
@@ -211,10 +223,18 @@ module ActiveSupport
211
223
  #
212
224
  # cache.decrement "rabbit"
213
225
  # cache.read "rabbit", :raw => true # => "-1"
214
- def decrement(key, amount = 1, options = {})
215
- options = merged_options(options)
216
- instrument(:decrement, key, :amount => amount) do
217
- with{|c| c.decrby normalize_key(key, options), amount}
226
+ def decrement(name, amount = 1, options = {})
227
+ instrument :decrement, name, amount: amount do
228
+ failsafe :decrement do
229
+ options = merged_options(options)
230
+ key = normalize_key(name, options)
231
+
232
+ with do |c|
233
+ c.decrby(key, amount).tap do
234
+ write_key_expiry(c, key, options)
235
+ end
236
+ end
237
+ end
218
238
  end
219
239
  end
220
240
 
@@ -226,7 +246,9 @@ module ActiveSupport
226
246
  # Clear all the data from the store.
227
247
  def clear
228
248
  instrument(:clear, nil, nil) do
229
- with(&:flushdb)
249
+ failsafe(:clear) do
250
+ with(&:flushdb)
251
+ end
230
252
  end
231
253
  end
232
254
 
@@ -255,20 +277,24 @@ module ActiveSupport
255
277
 
256
278
  protected
257
279
  def write_entry(key, entry, options)
258
- method = options && options[:unless_exist] ? :setnx : :set
259
- with { |client| client.send method, key, entry, options }
260
- rescue *ERRORS_TO_RESCUE
261
- raise if raise_errors?
262
- false
280
+ failsafe(:write_entry, returning: false) do
281
+ method = options && options[:unless_exist] ? :setnx : :set
282
+ with { |client| client.send method, key, entry, options }
283
+ end
263
284
  end
264
285
 
265
286
  def read_entry(key, options)
266
- entry = with { |c| c.get key, options }
267
- return unless entry
268
- entry.is_a?(Entry) ? entry : Entry.new(entry)
269
- rescue *ERRORS_TO_RESCUE
270
- raise if raise_errors?
271
- nil
287
+ failsafe(:read_entry) do
288
+ entry = with { |c| c.get key, options }
289
+ return unless entry
290
+ entry.is_a?(Entry) ? entry : Entry.new(entry)
291
+ end
292
+ end
293
+
294
+ def write_key_expiry(client, key, options)
295
+ if options[:expires_in] && client.ttl(key) < 0
296
+ client.expire key, options[:expires_in].to_i
297
+ end
272
298
  end
273
299
 
274
300
  ##
@@ -276,11 +302,10 @@ module ActiveSupport
276
302
  #
277
303
  # It's really needed and use
278
304
  #
279
- def delete_entry(key, options)
280
- with { |c| c.del key }
281
- rescue *ERRORS_TO_RESCUE
282
- raise if raise_errors?
283
- false
305
+ def delete_entry(key, **options)
306
+ failsafe(:delete_entry, returning: false) do
307
+ with { |c| c.del key }
308
+ end
284
309
  end
285
310
 
286
311
  def raise_errors?
@@ -305,12 +330,27 @@ module ActiveSupport
305
330
  end
306
331
 
307
332
  private
308
-
309
333
  if ActiveSupport::VERSION::MAJOR < 5
310
334
  def normalize_key(*args)
311
335
  namespaced_key(*args)
312
336
  end
313
337
  end
338
+
339
+ def failsafe(method, returning: nil)
340
+ yield
341
+ rescue ::Redis::BaseConnectionError => e
342
+ raise if raise_errors?
343
+ handle_exception(exception: e, method: method, returning: returning)
344
+ returning
345
+ end
346
+
347
+ def handle_exception(exception: nil, method: nil, returning: nil)
348
+ if @error_handler
349
+ @error_handler.(method: method, exception: exception, returning: returning)
350
+ end
351
+ rescue => failsafe
352
+ warn("RedisStore ignored exception in handle_exception: #{failsafe.class}: #{failsafe.message}\n #{failsafe.backtrace.join("\n ")}")
353
+ end
314
354
  end
315
355
  end
316
356
  end
@@ -1,5 +1,5 @@
1
1
  class Redis
2
2
  module ActiveSupport
3
- VERSION = '5.0.7'
3
+ VERSION = '5.3.0'
4
4
  end
5
5
  end
@@ -13,21 +13,20 @@ Gem::Specification.new do |s|
13
13
  s.description = %q{Redis store for ActiveSupport}
14
14
  s.license = 'MIT'
15
15
 
16
- s.rubyforge_project = 'redis-activesupport'
17
-
18
16
  s.files = `git ls-files`.split("\n")
19
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
19
  s.require_paths = ['lib']
22
20
 
23
21
  s.add_runtime_dependency "redis-store", '>= 1.3', '< 2'
24
- s.add_runtime_dependency 'activesupport', '>= 3', '< 6'
22
+ s.add_runtime_dependency 'activesupport', '>= 3', '< 8'
25
23
 
26
- s.add_development_dependency 'rake', '~> 10'
27
- s.add_development_dependency 'bundler', '~> 1.3'
24
+ s.add_development_dependency 'rake', '>= 12.3.3'
25
+ s.add_development_dependency 'bundler'
28
26
  s.add_development_dependency 'mocha', '~> 0.14.0'
29
27
  s.add_development_dependency 'minitest', '>= 4.2', '< 6'
30
- s.add_development_dependency 'connection_pool', '~> 2.2.0'
28
+ s.add_development_dependency 'connection_pool', '= 2.2.2'
31
29
  s.add_development_dependency 'redis-store-testing'
32
30
  s.add_development_dependency 'appraisal', '~> 2.0'
31
+ s.add_development_dependency 'pry-byebug', '~> 3'
33
32
  end
@@ -335,6 +335,24 @@ describe ActiveSupport::Cache::RedisStore do
335
335
  end
336
336
  end
337
337
 
338
+ it "increments a key with expiration time" do
339
+ with_store_management do |store|
340
+ store.increment "counter", 1, :expires_in => 1.second
341
+ store.read("counter", :raw => true).to_i.must_equal(1)
342
+ sleep 2
343
+ store.read("counter", :raw => true).must_be_nil
344
+ end
345
+ end
346
+
347
+ it "decrements a key with expiration time" do
348
+ with_store_management do |store|
349
+ store.decrement "counter", 1, :expires_in => 1.second
350
+ store.read("counter", :raw => true).to_i.must_equal(-1)
351
+ sleep 2
352
+ store.read("counter", :raw => true).must_be_nil
353
+ end
354
+ end
355
+
338
356
  it "clears the store" do
339
357
  with_store_management do |store|
340
358
  store.clear
@@ -377,7 +395,7 @@ describe ActiveSupport::Cache::RedisStore do
377
395
 
378
396
  describe "race_condition_ttl on fetch" do
379
397
  it "persist entry for longer than given ttl" do
380
- options = { force: true, expires_in: 1.second, race_condition_ttl: 2.seconds }
398
+ options = { force: true, expires_in: 1.second, race_condition_ttl: 2.seconds, version: Time.now.to_i }
381
399
  @store.fetch("rabbit", options) { @rabbit }
382
400
  sleep 1.1
383
401
  @store.delete("rabbit").must_equal(1)
@@ -385,12 +403,12 @@ describe ActiveSupport::Cache::RedisStore do
385
403
 
386
404
  it "limits stampede time to read-write duration" do
387
405
  first_rabbit = second_rabbit = nil
388
- options = { force: true, expires_in: 1.second, race_condition_ttl: 2.seconds }
406
+ options = { force: true, expires_in: 1.second, race_condition_ttl: 2.seconds, version: Time.now.to_i }
389
407
  @store.fetch("rabbit", options) { @rabbit }
390
408
  sleep 1
391
409
 
392
410
  th1 = Thread.new do
393
- first_rabbit = @store.fetch("rabbit", race_condition_ttl: 2) do
411
+ first_rabbit = @store.fetch("rabbit", options) do
394
412
  sleep 1
395
413
  @white_rabbit
396
414
  end
data/test/test_helper.rb CHANGED
@@ -4,4 +4,4 @@ require 'mocha/setup'
4
4
  require 'active_support'
5
5
  require 'active_support/cache/redis_store'
6
6
 
7
- puts "Testing against ActiveSupport v.#{ActiveSupport::VERSION::STRING}"
7
+ puts "Testing against ActiveSupport v#{ActiveSupport::VERSION::STRING}"
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.7
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  - Ryan Bigg
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-07-13 00:00:00.000000000 Z
12
+ date: 2022-01-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis-store
@@ -40,7 +40,7 @@ dependencies:
40
40
  version: '3'
41
41
  - - "<"
42
42
  - !ruby/object:Gem::Version
43
- version: '6'
43
+ version: '8'
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
@@ -50,35 +50,35 @@ dependencies:
50
50
  version: '3'
51
51
  - - "<"
52
52
  - !ruby/object:Gem::Version
53
- version: '6'
53
+ version: '8'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: rake
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '10'
60
+ version: 12.3.3
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '10'
67
+ version: 12.3.3
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: bundler
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '1.3'
74
+ version: '0'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '1.3'
81
+ version: '0'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: mocha
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -117,16 +117,16 @@ dependencies:
117
117
  name: connection_pool
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - "~>"
120
+ - - '='
121
121
  - !ruby/object:Gem::Version
122
- version: 2.2.0
122
+ version: 2.2.2
123
123
  type: :development
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - "~>"
127
+ - - '='
128
128
  - !ruby/object:Gem::Version
129
- version: 2.2.0
129
+ version: 2.2.2
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: redis-store-testing
132
132
  requirement: !ruby/object:Gem::Requirement
@@ -155,6 +155,20 @@ dependencies:
155
155
  - - "~>"
156
156
  - !ruby/object:Gem::Version
157
157
  version: '2.0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: pry-byebug
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '3'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '3'
158
172
  description: Redis store for ActiveSupport
159
173
  email:
160
174
  - me@lucaguidi.com
@@ -163,9 +177,11 @@ executables: []
163
177
  extensions: []
164
178
  extra_rdoc_files: []
165
179
  files:
180
+ - ".github/auto-assign-issues.yml"
166
181
  - ".gitignore"
167
182
  - ".travis.yml"
168
183
  - Appraisals
184
+ - CODEOWNERS
169
185
  - Gemfile
170
186
  - MIT-LICENSE
171
187
  - README.md
@@ -185,7 +201,7 @@ homepage: http://redis-store.org/redis-activesupport
185
201
  licenses:
186
202
  - MIT
187
203
  metadata: {}
188
- post_install_message:
204
+ post_install_message:
189
205
  rdoc_options: []
190
206
  require_paths:
191
207
  - lib
@@ -200,9 +216,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
216
  - !ruby/object:Gem::Version
201
217
  version: '0'
202
218
  requirements: []
203
- rubyforge_project: redis-activesupport
204
- rubygems_version: 2.6.14
205
- signing_key:
219
+ rubygems_version: 3.2.11
220
+ signing_key:
206
221
  specification_version: 4
207
222
  summary: Redis store for ActiveSupport
208
223
  test_files: