redis-activesupport 5.0.3 → 5.0.4

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: 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