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 +5 -5
- data/.github/auto-assign-issues.yml +2 -0
- data/.travis.yml +38 -21
- data/CODEOWNERS +1 -0
- data/README.md +8 -8
- data/lib/active_support/cache/redis_store.rb +93 -53
- data/lib/redis/active_support/version.rb +1 -1
- data/redis-activesupport.gemspec +5 -6
- data/test/active_support/cache/redis_store_test.rb +21 -3
- data/test/test_helper.rb +1 -1
- metadata +36 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1701d0f906647612a49e32325e5e3d4cef491fa6e4742b145482a7ad3f2b97b8
|
4
|
+
data.tar.gz: 4fcc1fa74965a7d624aa505874af54c2f49f379357deb5c0ce59efb1e4c7a91e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08fed28507f699223f4fd6ccc344a87d81f135e23837effc913353a8790f1db867dac62e54df107346b4eb01e441873b16675085714673c7fa1efcf9078a62e3'
|
7
|
+
data.tar.gz: 0527ae9cd279eb6b23a0519593a218ad46bc2e2b31cdef48f79571d1f1792b58f2cd92122d7e4b4c2417ab027240cccce47b23435c32f339dcd2d852c52d7738
|
data/.travis.yml
CHANGED
@@ -1,30 +1,47 @@
|
|
1
1
|
language: ruby
|
2
|
-
script:
|
2
|
+
script: bundle exec rake
|
3
3
|
rvm:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
13
|
+
- redis-server
|
13
14
|
matrix:
|
14
15
|
allow_failures:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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 |
|
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
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
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
|
-
|
122
|
-
|
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
|
-
|
125
|
-
|
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
|
-
|
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(
|
187
|
-
|
188
|
-
|
189
|
-
|
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(
|
215
|
-
|
216
|
-
|
217
|
-
|
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
|
-
|
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
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
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
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
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
|
-
|
281
|
-
|
282
|
-
|
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
|
data/redis-activesupport.gemspec
CHANGED
@@ -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', '<
|
22
|
+
s.add_runtime_dependency 'activesupport', '>= 3', '< 8'
|
25
23
|
|
26
|
-
s.add_development_dependency 'rake', '
|
27
|
-
s.add_development_dependency 'bundler'
|
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', '
|
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",
|
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
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
|
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:
|
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: '
|
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: '
|
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:
|
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:
|
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: '
|
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: '
|
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.
|
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.
|
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
|
-
|
204
|
-
|
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:
|