redis-activesupport 5.0.3 → 5.0.4

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
2
  SHA1:
3
- metadata.gz: eebc0d644eba5c56ef06413a98ac47d8cf73539f
4
- data.tar.gz: 33b363c215491c97282d37f596068868ba484313
3
+ metadata.gz: 33df3ef09a75d9ce2b545efe032cd801d2437eea
4
+ data.tar.gz: 807b5a494112c947faaacd3c47090004e47ffc5a
5
5
  SHA512:
6
- metadata.gz: a357ae2389638487bc51e9b976f3d76df74765096f91b0d9fbd9cda5eda6720afb3014a3867c77a5633f0cc6993901ffe739738774a7e085942c432f1f134239
7
- data.tar.gz: a986a0f70541447333c59c0ad1c034c59ab9aaa71d6b2ddc634330973193572bbfa7d95c6bb77d0aa2828f0f5949a4c74b5989820e322fa0861ec308bfd7e9d7
6
+ metadata.gz: 3bdafb650c1a86020859524d0d9f66c3d9d6f2e1b6772525d05a9f6574fbfca702bdc9fbc404c1581ea94b06e9c2c7b309faf0c73f7d6a674197d1688ae2df3e
7
+ data.tar.gz: 1bd8ea70bc58ebfc4f89c2152590139bc516fea97e796fcdfd6657cacc78c53bc1e74ac522399bc1ebdca3ca783ee991ed9da8d5895285ce252635f06b950a66
@@ -5,11 +5,11 @@ gemfile:
5
5
  - gemfiles/Gemfile.activesupport-4.x
6
6
  - gemfiles/Gemfile.activesupport-5.x
7
7
  rvm:
8
- - 1.9.3
9
- - 2.0.0
10
- - 2.1.5
11
- - 2.2.4
12
- - 2.3.0
8
+ - 2.0
9
+ - 2.1
10
+ - 2.2
11
+ - 2.3
12
+ - 2.4
13
13
  - ruby-head
14
14
  - jruby-head
15
15
  services:
@@ -18,13 +18,7 @@ matrix:
18
18
  allow_failures:
19
19
  - rvm: jruby-head
20
20
  - rvm: ruby-head
21
- - rvm: 1.9.3
21
+ - rvm: 2.0
22
22
  gemfile: gemfiles/Gemfile.activesupport-5.x
23
- - rvm: 2.0.0
24
- gemfile: gemfiles/Gemfile.activesupport-5.x
25
- - rvm: 2.1.5
26
- gemfile: gemfiles/Gemfile.activesupport-5.x
27
- - rvm: rbx-19mode
28
- gemfile: gemfiles/Gemfile.activesupport-5.x
29
- - rvm: jruby-19mode
23
+ - rvm: 2.1
30
24
  gemfile: gemfiles/Gemfile.activesupport-5.x
@@ -4,6 +4,14 @@ require 'redis-store'
4
4
  module ActiveSupport
5
5
  module Cache
6
6
  class RedisStore < Store
7
+
8
+ ERRORS_TO_RESCUE = [
9
+ Errno::ECONNREFUSED,
10
+ Errno::EHOSTUNREACH,
11
+ Redis::CannotConnectError,
12
+ Redis::ConnectionError
13
+ ].freeze
14
+
7
15
  attr_reader :data
8
16
 
9
17
  # Instantiate the store.
@@ -82,7 +90,7 @@ module ActiveSupport
82
90
  with do |store|
83
91
  !(keys = store.keys(matcher)).empty? && store.del(*keys)
84
92
  end
85
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Redis::CannotConnectError
93
+ rescue *ERRORS_TO_RESCUE
86
94
  raise if raise_errors?
87
95
  false
88
96
  end
@@ -103,12 +111,17 @@ module ActiveSupport
103
111
  args = [keys, options]
104
112
  args.flatten!
105
113
 
106
- values = with { |c| c.mget(*args) }
107
- values.map! { |v| v.is_a?(ActiveSupport::Cache::Entry) ? v.value : v }
114
+ instrument(:read_multi, names) do |payload|
115
+ values = with { |c| c.mget(*args) }
116
+ values.map! { |v| v.is_a?(ActiveSupport::Cache::Entry) ? v.value : v }
108
117
 
109
- result = Hash[names.zip(values)]
110
- result.reject!{ |k,v| v.nil? }
111
- result
118
+ Hash[names.zip(values)].reject{|k,v| v.nil?}.tap do |result|
119
+ payload[:hits] = result.keys if payload
120
+ end
121
+ end
122
+ rescue *ERRORS_TO_RESCUE
123
+ raise if raise_errors?
124
+ {}
112
125
  end
113
126
 
114
127
  def fetch_multi(*names)
@@ -128,12 +141,16 @@ module ActiveSupport
128
141
  memo
129
142
  end
130
143
 
131
- with do |c|
132
- c.multi do
133
- need_writes.each do |name, value|
134
- write(name, value, options)
144
+ begin
145
+ with do |c|
146
+ c.multi do
147
+ need_writes.each do |name, value|
148
+ write(name, value, options)
149
+ end
135
150
  end
136
151
  end
152
+ rescue *ERRORS_TO_RESCUE
153
+ raise if raise_errors?
137
154
  end
138
155
 
139
156
  fetched
@@ -234,7 +251,7 @@ module ActiveSupport
234
251
  def write_entry(key, entry, options)
235
252
  method = options && options[:unless_exist] ? :setnx : :set
236
253
  with { |client| client.send method, key, entry, options }
237
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Redis::CannotConnectError
254
+ rescue *ERRORS_TO_RESCUE
238
255
  raise if raise_errors?
239
256
  false
240
257
  end
@@ -244,7 +261,7 @@ module ActiveSupport
244
261
  if entry
245
262
  entry.is_a?(ActiveSupport::Cache::Entry) ? entry : ActiveSupport::Cache::Entry.new(entry)
246
263
  end
247
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Redis::CannotConnectError
264
+ rescue *ERRORS_TO_RESCUE
248
265
  raise if raise_errors?
249
266
  nil
250
267
  end
@@ -256,7 +273,7 @@ module ActiveSupport
256
273
  #
257
274
  def delete_entry(key, options)
258
275
  with { |c| c.del key }
259
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Redis::CannotConnectError
276
+ rescue *ERRORS_TO_RESCUE
260
277
  raise if raise_errors?
261
278
  false
262
279
  end
@@ -0,0 +1,5 @@
1
+ class Redis
2
+ module ActiveSupport
3
+ VERSION = '5.0.4'
4
+ end
5
+ end
@@ -1,9 +1,11 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path('../lib', __FILE__)
3
3
 
4
+ require 'redis/active_support/version'
5
+
4
6
  Gem::Specification.new do |s|
5
7
  s.name = 'redis-activesupport'
6
- s.version = '5.0.3'
8
+ s.version = Redis::ActiveSupport::VERSION
7
9
  s.authors = ['Luca Guidi', 'Ryan Bigg']
8
10
  s.email = ['me@lucaguidi.com', 'me@ryanbigg.com']
9
11
  s.homepage = 'http://redis-store.org/redis-activesupport'
@@ -18,7 +20,7 @@ Gem::Specification.new do |s|
18
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
21
  s.require_paths = ['lib']
20
22
 
21
- s.add_runtime_dependency 'redis-store', '~> 1.3.0'
23
+ s.add_runtime_dependency "redis-store", '>= 1.3', '< 2'
22
24
  s.add_runtime_dependency 'activesupport', '>= 3', '< 6'
23
25
 
24
26
  s.add_development_dependency 'rake', '~> 10'
@@ -585,6 +585,18 @@ describe ActiveSupport::Cache::RedisStore do
585
585
  exist.payload.must_equal({ :key => 'the smiths' })
586
586
  end
587
587
 
588
+ it "notifies on #read_multi" do
589
+ @store.write "depeche mode", "Enjoy The Silence"
590
+
591
+ with_notifications do
592
+ @store.read_multi "metallica", "depeche mode"
593
+ end
594
+
595
+ read = @events.first
596
+ read.name.must_equal('cache_read_multi.active_support')
597
+ read.payload.must_equal({ :key => ["metallica", "depeche mode"], :hits => ["depeche mode"] })
598
+ end
599
+
588
600
  it "notifies on #delete_matched" do
589
601
  with_notifications do
590
602
  @store.delete_matched "afterhours*"
@@ -640,6 +652,20 @@ describe ActiveSupport::Cache::RedisStore do
640
652
  end
641
653
  end
642
654
 
655
+ it "raises on read_multi when redis is unavailable" do
656
+ assert_raises(Redis::CannotConnectError) do
657
+ @raise_error_store.read_multi("rabbit", "white-rabbit")
658
+ end
659
+ end
660
+
661
+ it "raises on fetch_multi when redis is unavailable" do
662
+ assert_raises(Redis::CannotConnectError) do
663
+ @raise_error_store.fetch_multi("rabbit", "white-rabbit") do |key|
664
+ key.upcase
665
+ end
666
+ end
667
+ end
668
+
643
669
  it "raises on writes when redis is unavailable" do
644
670
  assert_raises(Redis::CannotConnectError) do
645
671
  @raise_error_store.write "rabbit", @white_rabbit, :expires_in => 1.second
@@ -665,10 +691,23 @@ describe ActiveSupport::Cache::RedisStore do
665
691
  @raise_error_store.stubs(:with).raises(Redis::CannotConnectError)
666
692
  end
667
693
 
668
- it "is nil when redis is unavailable" do
694
+ it "returns nil from read when redis is unavailable" do
669
695
  @raise_error_store.read("rabbit").must_be_nil
670
696
  end
671
697
 
698
+ it "returns empty hash from read_multi when redis is unavailable" do
699
+ @raise_error_store.read_multi("rabbit", "white-rabbit").must_equal({})
700
+ end
701
+
702
+ it "returns result hash from fetch_multi when redis is unavailable" do
703
+ @raise_error_store.fetch_multi("rabbit", "white-rabbit") do |key|
704
+ key.upcase
705
+ end.must_equal({
706
+ "rabbit" => "RABBIT",
707
+ "white-rabbit" => "WHITE-RABBIT",
708
+ })
709
+ end
710
+
672
711
  it "returns false when redis is unavailable" do
673
712
  @raise_error_store.write("rabbit", @white_rabbit, :expires_in => 1.second).must_equal(false)
674
713
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.3
4
+ version: 5.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -9,22 +9,28 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-10 00:00:00.000000000 Z
12
+ date: 2017-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis-store
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '1.3'
21
+ - - "<"
19
22
  - !ruby/object:Gem::Version
20
- version: 1.3.0
23
+ version: '2'
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
- - - "~>"
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '1.3'
31
+ - - "<"
26
32
  - !ruby/object:Gem::Version
27
- version: 1.3.0
33
+ version: '2'
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: activesupport
30
36
  requirement: !ruby/object:Gem::Requirement
@@ -154,6 +160,7 @@ files:
154
160
  - gemfiles/Gemfile.activesupport-5.x
155
161
  - lib/active_support/cache/redis_store.rb
156
162
  - lib/redis-activesupport.rb
163
+ - lib/redis/active_support/version.rb
157
164
  - redis-activesupport.gemspec
158
165
  - test/active_support/cache/redis_store_test.rb
159
166
  - test/test_helper.rb