lhc 12.3.0 → 13.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.activesupport5 +1 -1
- data/Gemfile.activesupport6 +1 -1
- data/README.md +13 -2
- data/cider-ci.yml +0 -1
- data/lhc.gemspec +3 -2
- data/lib/lhc/interceptors/caching.rb +57 -42
- data/lib/lhc/railtie.rb +0 -1
- data/lib/lhc/rspec.rb +1 -2
- data/lib/lhc/version.rb +1 -1
- data/spec/interceptors/caching/multilevel_cache_spec.rb +138 -0
- data/spec/interceptors/caching/options_spec.rb +0 -11
- data/spec/spec_helper.rb +1 -0
- metadata +26 -12
- data/Gemfile.activesupport4 +0 -4
- data/cider-ci/jobs/rspec-activesupport-4.yml +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4795a0c91e246b2139465a030a8f98e0ba2deb07a48664632524b00ad2f02403
|
4
|
+
data.tar.gz: 821adbc1157dbd699ad9a40f556a3ea7e94088aa8a320de6685b475a11596351
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f8a0035d222617beeafce69dfadb17138d5eb31ea6fed900b6aca4582bbafb332b564e3557f42a1dbbcb287f2e6c55fe100c5e74f92e916f0686172b06f9f07
|
7
|
+
data.tar.gz: '058260bffcbacc6edac359e9852a519c3b49fe902bf48a3c7635226c43c563f73c1308ca11fbf6096213ade013ffc40e22c22e4901e455628b19e0d87cc74c7d'
|
data/Gemfile.activesupport5
CHANGED
data/Gemfile.activesupport6
CHANGED
data/README.md
CHANGED
@@ -601,7 +601,6 @@ You can configure your own cache (default Rails.cache) and logger (default Rails
|
|
601
601
|
|
602
602
|
```ruby
|
603
603
|
LHC::Caching.cache = ActiveSupport::Cache::MemoryStore.new
|
604
|
-
LHC::Caching.logger = Logger.new(STDOUT)
|
605
604
|
```
|
606
605
|
|
607
606
|
Caching is not enabled by default, although you added it to your basic set of interceptors.
|
@@ -632,6 +631,18 @@ Responses served from cache are marked as served from cache:
|
|
632
631
|
response.from_cache? # true
|
633
632
|
```
|
634
633
|
|
634
|
+
You can also use a central http cache to be used by the `LHC::Caching` interceptor.
|
635
|
+
|
636
|
+
If you configure a local and a central cache, LHC will perform multi-level-caching.
|
637
|
+
LHC will try to retrieve cached information first from the central, in case of a miss from the local cache, while writing back into both.
|
638
|
+
|
639
|
+
```ruby
|
640
|
+
LHC::Caching.central = {
|
641
|
+
read: 'redis://$PASSWORD@central-http-cache-replica.namespace:6379/0',
|
642
|
+
write: 'redis://$PASSWORD@central-http-cache-master.namespace:6379/0'
|
643
|
+
}
|
644
|
+
```
|
645
|
+
|
635
646
|
##### Options
|
636
647
|
|
637
648
|
```ruby
|
@@ -644,7 +655,7 @@ Responses served from cache are marked as served from cache:
|
|
644
655
|
|
645
656
|
`race_condition_ttl` - very useful in situations where a cache entry is used very frequently and is under heavy load.
|
646
657
|
If a cache expires and due to heavy load several different processes will try to read data natively and then they all will try to write to cache.
|
647
|
-
To avoid that case the first process to find an expired cache entry will bump the cache expiration time by the value set in `
|
658
|
+
To avoid that case the first process to find an expired cache entry will bump the cache expiration time by the value set in `race_condition_ttl`.
|
648
659
|
|
649
660
|
`use` - Set an explicit cache to be used for this request. If this option is missing `LHC::Caching.cache` is used.
|
650
661
|
|
data/cider-ci.yml
CHANGED
data/lhc.gemspec
CHANGED
@@ -21,14 +21,15 @@ Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
s.requirements << 'Ruby >= 2.0.0'
|
23
23
|
|
24
|
-
s.add_dependency 'activesupport', '>=
|
24
|
+
s.add_dependency 'activesupport', '>= 5.2'
|
25
25
|
s.add_dependency 'addressable'
|
26
26
|
s.add_dependency 'typhoeus', '>= 0.11'
|
27
27
|
|
28
28
|
s.add_development_dependency 'geminabox'
|
29
29
|
s.add_development_dependency 'prometheus-client', '~> 0.7.1'
|
30
30
|
s.add_development_dependency 'pry'
|
31
|
-
s.add_development_dependency 'rails', '>=
|
31
|
+
s.add_development_dependency 'rails', '>= 5.2'
|
32
|
+
s.add_development_dependency 'redis'
|
32
33
|
s.add_development_dependency 'rspec-rails', '>= 3.0.0'
|
33
34
|
s.add_development_dependency 'rubocop', '~> 0.57.1'
|
34
35
|
s.add_development_dependency 'rubocop-rspec', '~> 1.26.0'
|
@@ -3,69 +3,98 @@
|
|
3
3
|
class LHC::Caching < LHC::Interceptor
|
4
4
|
include ActiveSupport::Configurable
|
5
5
|
|
6
|
-
config_accessor :cache, :
|
6
|
+
config_accessor :cache, :central
|
7
7
|
|
8
|
+
# to control cache invalidation across all applications in case of
|
9
|
+
# breaking changes within this inteceptor
|
10
|
+
# that do not lead to cache invalidation otherwise
|
8
11
|
CACHE_VERSION = '1'
|
9
12
|
|
10
13
|
# Options forwarded to the cache
|
11
14
|
FORWARDED_OPTIONS = [:expires_in, :race_condition_ttl]
|
12
15
|
|
16
|
+
class MultilevelCache
|
17
|
+
|
18
|
+
def initialize(central: nil, local: nil)
|
19
|
+
@central = central
|
20
|
+
@local = local
|
21
|
+
end
|
22
|
+
|
23
|
+
def fetch(key)
|
24
|
+
central_response = @central[:read].fetch(key) if @central && @central[:read].present?
|
25
|
+
if central_response
|
26
|
+
puts %Q{[LHC] served from central cache: "#{key}"}
|
27
|
+
return central_response
|
28
|
+
end
|
29
|
+
local_response = @local.fetch(key) if @local
|
30
|
+
if local_response
|
31
|
+
puts %Q{[LHC] served from local cache: "#{key}"}
|
32
|
+
return local_response
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def write(key, content, options)
|
37
|
+
@central[:write].write(key, content, options) if @central && @central[:write].present?
|
38
|
+
@local.write(key, content, options) if @local.present?
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
13
42
|
def before_request
|
14
43
|
return unless cache?(request)
|
15
|
-
deprecation_warning(request.options)
|
16
|
-
options = options(request.options)
|
17
44
|
key = key(request, options[:key])
|
18
|
-
response_data =
|
45
|
+
response_data = multilevel_cache.fetch(key)
|
19
46
|
return unless response_data
|
20
|
-
logger&.info "Served from cache: #{key}"
|
21
47
|
from_cache(request, response_data)
|
22
48
|
end
|
23
49
|
|
24
50
|
def after_response
|
25
51
|
return unless response.success?
|
26
|
-
request = response.request
|
27
52
|
return unless cache?(request)
|
28
|
-
|
29
|
-
cache_for(options).write(
|
53
|
+
multilevel_cache.write(
|
30
54
|
key(request, options[:key]),
|
31
55
|
to_cache(response),
|
32
|
-
cache_options
|
56
|
+
cache_options
|
33
57
|
)
|
34
58
|
end
|
35
59
|
|
36
60
|
private
|
37
61
|
|
38
|
-
#
|
39
|
-
def
|
62
|
+
# performs read/write (fetch/write) on all configured cache levels (e.g. local & central)
|
63
|
+
def multilevel_cache
|
64
|
+
MultilevelCache.new(
|
65
|
+
central: central_cache,
|
66
|
+
local: local_cache
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
# returns the local cache either configured for entire LHC
|
71
|
+
# or configured locally for that particular request
|
72
|
+
def local_cache
|
40
73
|
options.fetch(:use, cache)
|
41
74
|
end
|
42
75
|
|
76
|
+
def central_cache
|
77
|
+
return nil if central.blank? || (central[:read].blank? && central[:write].blank?)
|
78
|
+
{}.tap do |options|
|
79
|
+
options[:read] = ActiveSupport::Cache::RedisCacheStore.new(url: central[:read]) if central[:read].present?
|
80
|
+
options[:write] = ActiveSupport::Cache::RedisCacheStore.new(url: central[:write]) if central[:write].present?
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
43
84
|
# do we even need to bother with this interceptor?
|
44
85
|
# based on the options, this method will
|
45
86
|
# return false if this interceptor cannot work
|
46
87
|
def cache?(request)
|
47
88
|
return false unless request.options[:cache]
|
48
|
-
|
49
|
-
cache_for(options) &&
|
89
|
+
(local_cache || central_cache) &&
|
50
90
|
cached_method?(request.method, options[:methods])
|
51
91
|
end
|
52
92
|
|
53
|
-
|
54
|
-
|
55
|
-
def options(request_options)
|
56
|
-
options = (request_options[:cache] == true) ? {} : request_options[:cache].dup
|
57
|
-
map_deprecated_options!(request_options, options)
|
93
|
+
def options
|
94
|
+
options = (request.options[:cache] == true) ? {} : request.options[:cache].dup
|
58
95
|
options
|
59
96
|
end
|
60
97
|
|
61
|
-
# maps `cache_key` -> `key`, `cache_expires_in` -> `expires_in` and so on
|
62
|
-
def map_deprecated_options!(request_options, options)
|
63
|
-
deprecated_keys(request_options).each do |deprecated_key|
|
64
|
-
new_key = deprecated_key.to_s.gsub(/^cache_/, '').to_sym
|
65
|
-
options[new_key] = request_options[deprecated_key]
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
98
|
# converts json we read from the cache to an LHC::Response object
|
70
99
|
def from_cache(request, data)
|
71
100
|
raw = Typhoeus::Response.new(data)
|
@@ -104,24 +133,10 @@ class LHC::Caching < LHC::Interceptor
|
|
104
133
|
|
105
134
|
# extracts the options that should be forwarded to
|
106
135
|
# the cache
|
107
|
-
def cache_options
|
108
|
-
|
136
|
+
def cache_options
|
137
|
+
options.each_with_object({}) do |(key, value), result|
|
109
138
|
result[key] = value if key.in? FORWARDED_OPTIONS
|
110
139
|
result
|
111
140
|
end
|
112
141
|
end
|
113
|
-
|
114
|
-
# grabs the deprecated keys from the request options
|
115
|
-
def deprecated_keys(request_options)
|
116
|
-
request_options.keys.select { |k| k =~ /^cache_.*/ }.sort
|
117
|
-
end
|
118
|
-
|
119
|
-
# emits a deprecation warning if necessary
|
120
|
-
def deprecation_warning(request_options)
|
121
|
-
unless deprecated_keys(request_options).empty?
|
122
|
-
ActiveSupport::Deprecation.warn(
|
123
|
-
"Cache options have changed! #{deprecated_keys(request_options).join(', ')} are deprecated and will be removed in future versions."
|
124
|
-
)
|
125
|
-
end
|
126
|
-
end
|
127
142
|
end
|
data/lib/lhc/railtie.rb
CHANGED
data/lib/lhc/rspec.rb
CHANGED
data/lib/lhc/version.rb
CHANGED
@@ -0,0 +1,138 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
|
5
|
+
describe LHC::Caching do
|
6
|
+
let(:redis_url) { 'redis://localhost:6379/0' }
|
7
|
+
let(:redis_cache) do
|
8
|
+
spy('ActiveSupport::Cache::RedisCacheStore')
|
9
|
+
end
|
10
|
+
|
11
|
+
before do
|
12
|
+
Rails.cache.clear
|
13
|
+
LHC.config.interceptors = [LHC::Caching]
|
14
|
+
ActiveSupport::Cache::RedisCacheStore.new(url: redis_url).clear
|
15
|
+
allow(ActiveSupport::Cache::RedisCacheStore).to receive(:new).and_return(redis_cache)
|
16
|
+
allow(redis_cache).to receive(:present?).and_return(true)
|
17
|
+
end
|
18
|
+
|
19
|
+
let!(:request_stub) do
|
20
|
+
stub_request(:get, "http://local.ch/")
|
21
|
+
.to_return(body: '<h1>Hi there</h1>')
|
22
|
+
end
|
23
|
+
|
24
|
+
def request
|
25
|
+
LHC.get('http://local.ch', cache: true)
|
26
|
+
end
|
27
|
+
|
28
|
+
def response_has_been_cached_and_served_from_cache!
|
29
|
+
original_response = request
|
30
|
+
cached_response = request
|
31
|
+
|
32
|
+
expect(original_response.body).to eq cached_response.body
|
33
|
+
expect(original_response.code).to eq cached_response.code
|
34
|
+
expect(original_response.headers).to eq cached_response.headers
|
35
|
+
expect(original_response.options[:return_code]).to eq cached_response.options[:return_code]
|
36
|
+
expect(original_response.mock).to eq cached_response.mock
|
37
|
+
|
38
|
+
assert_requested request_stub, times: 1
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'only local cache has been configured' do
|
42
|
+
before do
|
43
|
+
LHC::Caching.cache = Rails.cache
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'serves a response from local cache without trying the central cache' do
|
47
|
+
expect(Rails.cache).to receive(:fetch).at_least(:once).and_call_original
|
48
|
+
expect(Rails.cache).to receive(:write).and_call_original
|
49
|
+
expect(-> { response_has_been_cached_and_served_from_cache! })
|
50
|
+
.to output(%Q{[LHC] served from local cache: "LHC_CACHE(v1): GET http://local.ch"\n}).to_stdout
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'local and central cache have been configured' do
|
55
|
+
before do
|
56
|
+
LHC::Caching.cache = Rails.cache
|
57
|
+
LHC::Caching.central = {
|
58
|
+
read: redis_url,
|
59
|
+
write: redis_url
|
60
|
+
}
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'found in central cache' do
|
64
|
+
it 'serves it from central cache if found there' do
|
65
|
+
expect(redis_cache).to receive(:fetch).and_return(nil, body: '<h1>Hi there</h1>', code: 200, headers: nil, return_code: nil, mock: :webmock)
|
66
|
+
expect(redis_cache).to receive(:write).and_return(true)
|
67
|
+
expect(Rails.cache).to receive(:fetch).and_call_original
|
68
|
+
expect(Rails.cache).to receive(:write).and_call_original
|
69
|
+
expect(-> { response_has_been_cached_and_served_from_cache! })
|
70
|
+
.to output(%Q{[LHC] served from central cache: "LHC_CACHE(v1): GET http://local.ch"\n}).to_stdout
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'not found in central cache' do
|
75
|
+
it 'serves it from local cache if found there' do
|
76
|
+
expect(redis_cache).to receive(:fetch).and_return(nil, nil)
|
77
|
+
expect(redis_cache).to receive(:write).and_return(true)
|
78
|
+
expect(Rails.cache).to receive(:fetch).at_least(:once).and_call_original
|
79
|
+
expect(Rails.cache).to receive(:write).and_call_original
|
80
|
+
expect(-> { response_has_been_cached_and_served_from_cache! })
|
81
|
+
.to output(%Q{[LHC] served from local cache: "LHC_CACHE(v1): GET http://local.ch"\n}).to_stdout
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'only central read configured' do
|
87
|
+
before do
|
88
|
+
LHC::Caching.cache = Rails.cache
|
89
|
+
LHC::Caching.central = {
|
90
|
+
read: redis_url
|
91
|
+
}
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'still serves responses from cache, but does not write them back' do
|
95
|
+
expect(redis_cache).to receive(:fetch).and_return(nil, body: '<h1>Hi there</h1>', code: 200, headers: nil, return_code: nil, mock: :webmock)
|
96
|
+
expect(redis_cache).not_to receive(:write)
|
97
|
+
expect(Rails.cache).to receive(:fetch).and_call_original
|
98
|
+
expect(Rails.cache).to receive(:write).and_call_original
|
99
|
+
expect(-> { response_has_been_cached_and_served_from_cache! })
|
100
|
+
.to output(%Q{[LHC] served from central cache: "LHC_CACHE(v1): GET http://local.ch"\n}).to_stdout
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'only central write configured' do
|
105
|
+
before do
|
106
|
+
LHC::Caching.cache = Rails.cache
|
107
|
+
LHC::Caching.central = {
|
108
|
+
write: redis_url
|
109
|
+
}
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'still writes responses to cache, but does not retrieve them from there' do
|
113
|
+
expect(redis_cache).not_to receive(:fetch)
|
114
|
+
expect(redis_cache).to receive(:write).and_return(true)
|
115
|
+
expect(Rails.cache).to receive(:fetch).at_least(:once).and_call_original
|
116
|
+
expect(Rails.cache).to receive(:write).and_call_original
|
117
|
+
expect(-> { response_has_been_cached_and_served_from_cache! })
|
118
|
+
.to output(%Q{[LHC] served from local cache: "LHC_CACHE(v1): GET http://local.ch"\n}).to_stdout
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'central cache configured only' do
|
123
|
+
before do
|
124
|
+
LHC::Caching.cache = nil
|
125
|
+
LHC::Caching.central = {
|
126
|
+
read: redis_url,
|
127
|
+
write: redis_url
|
128
|
+
}
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'does not inquire the local cache for information neither to write them' do
|
132
|
+
expect(redis_cache).to receive(:fetch).and_return(nil, body: '<h1>Hi there</h1>', code: 200, headers: nil, return_code: nil, mock: :webmock)
|
133
|
+
expect(redis_cache).to receive(:write).and_return(true)
|
134
|
+
expect(-> { response_has_been_cached_and_served_from_cache! })
|
135
|
+
.to output(%Q{[LHC] served from central cache: "LHC_CACHE(v1): GET http://local.ch"\n}).to_stdout
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -20,17 +20,6 @@ describe LHC::Caching do
|
|
20
20
|
default_cache.clear
|
21
21
|
end
|
22
22
|
|
23
|
-
it 'maps deprecated cache options' do
|
24
|
-
expected_options = { expires_in: 5.minutes, race_condition_ttl: 15.seconds }
|
25
|
-
expected_key = "LHC_CACHE(v1): key"
|
26
|
-
expect(default_cache).to receive(:write).with(expected_key, anything, expected_options)
|
27
|
-
expect(lambda {
|
28
|
-
LHC.get('http://local.ch', cache: true, cache_expires_in: 5.minutes, cache_key: 'key', cache_race_condition_ttl: 15.seconds)
|
29
|
-
}).to output(
|
30
|
-
/Cache options have changed! cache_expires_in, cache_key, cache_race_condition_ttl are deprecated and will be removed in future versions./
|
31
|
-
).to_stderr
|
32
|
-
end
|
33
|
-
|
34
23
|
it 'does cache' do
|
35
24
|
expect(default_cache).to receive(:fetch)
|
36
25
|
expect(default_cache).to receive(:write)
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lhc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 13.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/local-ch/lhc/contributors
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: addressable
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,28 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '5.2'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '5.2'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: redis
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: rspec-rails
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,7 +207,6 @@ files:
|
|
193
207
|
- ".rubocop.yml"
|
194
208
|
- ".ruby-version"
|
195
209
|
- Gemfile
|
196
|
-
- Gemfile.activesupport4
|
197
210
|
- Gemfile.activesupport5
|
198
211
|
- Gemfile.activesupport6
|
199
212
|
- LICENSE
|
@@ -203,7 +216,6 @@ files:
|
|
203
216
|
- cider-ci/bin/bundle
|
204
217
|
- cider-ci/bin/ruby_install
|
205
218
|
- cider-ci/bin/ruby_version
|
206
|
-
- cider-ci/jobs/rspec-activesupport-4.yml
|
207
219
|
- cider-ci/jobs/rspec-activesupport-5.yml
|
208
220
|
- cider-ci/jobs/rspec-activesupport-6.yml
|
209
221
|
- cider-ci/jobs/rubocop.yml
|
@@ -335,6 +347,7 @@ files:
|
|
335
347
|
- spec/interceptors/caching/hydra_spec.rb
|
336
348
|
- spec/interceptors/caching/main_spec.rb
|
337
349
|
- spec/interceptors/caching/methods_spec.rb
|
350
|
+
- spec/interceptors/caching/multilevel_cache_spec.rb
|
338
351
|
- spec/interceptors/caching/options_spec.rb
|
339
352
|
- spec/interceptors/caching/parameters_spec.rb
|
340
353
|
- spec/interceptors/caching/response_status_spec.rb
|
@@ -389,7 +402,7 @@ homepage: https://github.com/local-ch/lhc
|
|
389
402
|
licenses:
|
390
403
|
- GPL-3.0
|
391
404
|
metadata: {}
|
392
|
-
post_install_message:
|
405
|
+
post_install_message:
|
393
406
|
rdoc_options: []
|
394
407
|
require_paths:
|
395
408
|
- lib
|
@@ -405,8 +418,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
405
418
|
version: '0'
|
406
419
|
requirements:
|
407
420
|
- Ruby >= 2.0.0
|
408
|
-
rubygems_version: 3.0.
|
409
|
-
signing_key:
|
421
|
+
rubygems_version: 3.0.6
|
422
|
+
signing_key:
|
410
423
|
specification_version: 4
|
411
424
|
summary: Advanced HTTP Client for Ruby, fueled with interceptors
|
412
425
|
test_files:
|
@@ -488,6 +501,7 @@ test_files:
|
|
488
501
|
- spec/interceptors/caching/hydra_spec.rb
|
489
502
|
- spec/interceptors/caching/main_spec.rb
|
490
503
|
- spec/interceptors/caching/methods_spec.rb
|
504
|
+
- spec/interceptors/caching/multilevel_cache_spec.rb
|
491
505
|
- spec/interceptors/caching/options_spec.rb
|
492
506
|
- spec/interceptors/caching/parameters_spec.rb
|
493
507
|
- spec/interceptors/caching/response_status_spec.rb
|
data/Gemfile.activesupport4
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
rspec-active-support-v4:
|
2
|
-
name: 'rspec with ActiveSupport v4'
|
3
|
-
|
4
|
-
run_when:
|
5
|
-
'some HEAD has been updated':
|
6
|
-
type: branch
|
7
|
-
include_match: ^.*$
|
8
|
-
|
9
|
-
context:
|
10
|
-
|
11
|
-
script_defaults:
|
12
|
-
template_environment_variables: true
|
13
|
-
|
14
|
-
task_defaults:
|
15
|
-
environment_variables:
|
16
|
-
ACTIVESUPPORT: '4'
|
17
|
-
BUNDLER: '_1.17.3_'
|
18
|
-
|
19
|
-
max_trials: 2
|
20
|
-
dispatch_storm_delay_duration: 1 Seconds
|
21
|
-
include:
|
22
|
-
- cider-ci/task_components/ruby.yml
|
23
|
-
- cider-ci/task_components/bundle.yml
|
24
|
-
- cider-ci/task_components/rspec.yml
|
25
|
-
|
26
|
-
tasks:
|
27
|
-
all-rspec:
|
28
|
-
name: All rspec tests, using ActiveSupport v4
|