alephant-broker 3.16.2 → 3.17.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 +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +8 -22
- data/README.md +1 -1
- data/alephant-broker.gemspec +5 -3
- data/lib/alephant/broker/load_strategy/revalidate/fetcher.rb +1 -1
- data/lib/alephant/broker/load_strategy/revalidate/refresher.rb +21 -19
- data/lib/alephant/broker/load_strategy/s3/base.rb +1 -1
- data/lib/alephant/broker/response/base.rb +3 -1
- data/lib/alephant/broker/version.rb +1 -1
- data/spec/alephant/broker/load_strategy/revalidate/fetcher_spec.rb +4 -4
- data/spec/alephant/broker/load_strategy/revalidate/refresher_spec.rb +12 -10
- data/spec/integration/not_modified_response_spec.rb +6 -6
- data/spec/integration/rack_spec.rb +16 -12
- data/spec/integration/revalidate_spec.rb +7 -7
- metadata +132 -104
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79ffc0d688acfa52b4b51a2c2272292c2e9d56de
|
4
|
+
data.tar.gz: 06cba46f0b07201a0d10cf496db2ba3f04d0b96e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d43960d272a526f2fd73e7be91e828b38dfafecdafeac315610b901cd2b462d728091db477a7adbe08fad7587b8009f587389c8a75d67177fd5f6bad8e5568d
|
7
|
+
data.tar.gz: 546a4468df7246a3121f3b3cdd01422c1a4fc6467a8ded2cf359bce99e2c2cd000e30fb65540ad78f8ab977bfbd2bb4a1cc6b469de319a44dedf911e78b61209
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.3
|
data/.travis.yml
CHANGED
@@ -1,24 +1,10 @@
|
|
1
|
-
sudo: false
|
2
|
-
cache: bundler
|
3
1
|
language: ruby
|
4
|
-
|
5
|
-
# Ruby build matrix
|
6
2
|
rvm:
|
7
|
-
- 2.
|
8
|
-
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
env:
|
16
|
-
- RUBYOPT="-W0"
|
17
|
-
|
18
|
-
# Ensure we don't build for *every* commit (doesn't apply to PR builds)
|
19
|
-
branches:
|
20
|
-
only:
|
21
|
-
- master
|
22
|
-
|
23
|
-
script:
|
24
|
-
- bundle exec rspec --format documentation
|
3
|
+
- "2.3"
|
4
|
+
- "jruby"
|
5
|
+
notifications:
|
6
|
+
email:
|
7
|
+
recipients:
|
8
|
+
- D&ENewsFrameworksTeam@bbc.co.uk
|
9
|
+
on_failure: change
|
10
|
+
on_success: never
|
data/README.md
CHANGED
@@ -126,7 +126,7 @@ end
|
|
126
126
|
|
127
127
|
The "Revalidate" strategy uses the following process flow:
|
128
128
|
|
129
|
-

|
130
130
|
|
131
131
|
And uses the following AWS resources:
|
132
132
|
|
data/alephant-broker.gemspec
CHANGED
@@ -33,10 +33,12 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency "simplecov"
|
34
34
|
spec.add_development_dependency "timecop"
|
35
35
|
|
36
|
-
spec.add_runtime_dependency "alephant-lookup"
|
37
|
-
spec.add_runtime_dependency "alephant-storage"
|
38
|
-
spec.add_runtime_dependency "alephant-logger"
|
36
|
+
spec.add_runtime_dependency "alephant-lookup"
|
37
|
+
spec.add_runtime_dependency "alephant-storage"
|
38
|
+
spec.add_runtime_dependency "alephant-logger"
|
39
39
|
spec.add_runtime_dependency 'alephant-sequencer'
|
40
|
+
spec.add_runtime_dependency "aws-sdk-sqs"
|
41
|
+
spec.add_runtime_dependency "aws-sdk-s3"
|
40
42
|
spec.add_runtime_dependency "dalli-elasticache"
|
41
43
|
spec.add_runtime_dependency "faraday"
|
42
44
|
spec.add_runtime_dependency "crimp"
|
@@ -15,7 +15,7 @@ module Alephant
|
|
15
15
|
|
16
16
|
def fetch
|
17
17
|
Alephant::Broker::Cache::CachedObject.new(s3.get(s3_path))
|
18
|
-
rescue
|
18
|
+
rescue Aws::S3::Errors::NoSuchKey, InvalidCacheKey => error
|
19
19
|
logger.info(event: 'ErrorCaught', method: "#{self.class}#fetch", error: error)
|
20
20
|
logger.metric('S3InvalidCacheKey')
|
21
21
|
raise Alephant::Broker::Errors::ContentNotFound
|
@@ -22,35 +22,37 @@ module Alephant
|
|
22
22
|
|
23
23
|
logger.info(event: 'QueueMessage', message: message, method: "#{self.class}#refresh")
|
24
24
|
|
25
|
-
|
25
|
+
client.send_message(
|
26
|
+
queue_url: queue_url,
|
27
|
+
message_body: message
|
28
|
+
)
|
29
|
+
|
26
30
|
cache.set(inflight_cache_key, true, INFLIGHT_CACHE_TTL)
|
27
31
|
end
|
28
32
|
|
29
33
|
private
|
30
34
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
timestamp: Time.now.to_s)
|
36
|
-
end
|
37
|
-
|
38
|
-
def queue
|
39
|
-
@queue ||= proc do
|
40
|
-
client = AWS::SQS.new
|
41
|
-
url = client.queues.url_for(Broker.config[:sqs_queue_name], queue_options)
|
35
|
+
def client
|
36
|
+
options = {}
|
37
|
+
options[:endpoint] = ENV['AWS_SQS_ENDPOINT'] if ENV['AWS_SQS_ENDPOINT']
|
38
|
+
options[:queue_owner_aws_account_id] = aws_acc_id if aws_acc_id
|
42
39
|
|
43
|
-
|
44
|
-
end.call
|
40
|
+
@client ||= Aws::SQS::Client.new(options)
|
45
41
|
end
|
46
42
|
|
47
|
-
def
|
48
|
-
|
49
|
-
|
43
|
+
def queue_url
|
44
|
+
options = {
|
45
|
+
queue_name: Broker.config[:sqs_queue_name]
|
46
|
+
}
|
50
47
|
|
51
|
-
|
48
|
+
client.get_queue_url(options).queue_url
|
49
|
+
end
|
52
50
|
|
53
|
-
|
51
|
+
def message
|
52
|
+
::JSON.generate(id: component_meta.id,
|
53
|
+
batch_id: component_meta.batch_id,
|
54
|
+
options: component_meta.options,
|
55
|
+
timestamp: Time.now.to_s)
|
54
56
|
end
|
55
57
|
|
56
58
|
def aws_acc_id
|
@@ -60,7 +60,7 @@ module Alephant
|
|
60
60
|
def retrieve_object(component_meta)
|
61
61
|
@cached = false
|
62
62
|
s3.get s3_path(component_meta)
|
63
|
-
rescue
|
63
|
+
rescue Aws::S3::Errors::NoSuchKey, InvalidCacheKey
|
64
64
|
logger.metric "S3InvalidCacheKey"
|
65
65
|
raise Alephant::Broker::Errors::ContentNotFound
|
66
66
|
end
|
@@ -23,15 +23,15 @@ RSpec.describe Alephant::Broker::LoadStrategy::Revalidate::Fetcher do
|
|
23
23
|
let(:content_type) { "text/html" }
|
24
24
|
|
25
25
|
let(:content) do
|
26
|
-
|
26
|
+
{
|
27
27
|
:content_type => "test/content",
|
28
|
-
:
|
28
|
+
:body => "Test",
|
29
29
|
:metadata => {
|
30
30
|
"ttl" => 30,
|
31
31
|
"head_ETag" => "123",
|
32
32
|
"head_Last-Modified" => "Mon, 11 Apr 2016 10:39:57 GMT"
|
33
33
|
}
|
34
|
-
|
34
|
+
}
|
35
35
|
end
|
36
36
|
|
37
37
|
before do
|
@@ -75,7 +75,7 @@ RSpec.describe Alephant::Broker::LoadStrategy::Revalidate::Fetcher do
|
|
75
75
|
before do
|
76
76
|
allow(storage_double)
|
77
77
|
.to receive(:get)
|
78
|
-
.and_raise(
|
78
|
+
.and_raise(Aws::S3::Errors::NoSuchKey.new(nil, nil))
|
79
79
|
end
|
80
80
|
|
81
81
|
it "raises an Alephant::Broker::Errors::ContentNotFound error" do
|
@@ -7,20 +7,19 @@ RSpec.describe Alephant::Broker::LoadStrategy::Revalidate::Refresher do
|
|
7
7
|
Alephant::Broker::ComponentMeta.new("test", "test_batch", {})
|
8
8
|
end
|
9
9
|
|
10
|
-
let(:sqs_double) { instance_double(AWS::SQS, :queues => sqs_queues_double) }
|
11
|
-
let(:sqs_queue_double) { instance_double(AWS::SQS::Queue) }
|
12
|
-
let(:sqs_queues_double) { instance_double(AWS::SQS::QueueCollection, :url_for => "example.com", :[] => sqs_queue_double) }
|
13
|
-
|
14
10
|
let(:config) { { :aws_account_id => "12345", :sqs_queue_name => "bob" } }
|
15
11
|
|
16
12
|
let(:cache) { subject.send(:cache) }
|
17
13
|
let(:cache_key) { subject.send(:cache_key) }
|
18
14
|
let(:inflight_cache_key) { subject.send(:inflight_cache_key) }
|
19
15
|
|
16
|
+
let(:queue_url) { 'http://sqs.aws.myqueue/id' }
|
17
|
+
let(:fake_client) { Aws::SQS::Client.new(stub_responses: true) }
|
18
|
+
|
20
19
|
before do
|
20
|
+
allow(subject).to receive(:client).and_return(fake_client)
|
21
21
|
allow_any_instance_of(Logger).to receive(:info)
|
22
22
|
allow_any_instance_of(Logger).to receive(:debug)
|
23
|
-
allow(AWS::SQS).to receive(:new).and_return(sqs_double)
|
24
23
|
allow(Alephant::Broker).to receive(:config).and_return(config)
|
25
24
|
end
|
26
25
|
|
@@ -48,10 +47,12 @@ RSpec.describe Alephant::Broker::LoadStrategy::Revalidate::Refresher do
|
|
48
47
|
.and_return(nil)
|
49
48
|
end
|
50
49
|
|
51
|
-
it "adds a message to the SQS queue, "
|
52
|
-
|
50
|
+
it "adds a message to the SQS queue, and puts a 'inflight' message in the cache" do
|
51
|
+
fake_client.stub_responses(:get_queue_url, { queue_url: queue_url })
|
52
|
+
|
53
|
+
expect(fake_client).to receive(:send_message)
|
54
|
+
|
53
55
|
expect(cache).to receive(:set).with(inflight_cache_key, true, described_class::INFLIGHT_CACHE_TTL)
|
54
|
-
expect(sqs_queue_double).to receive(:send_message)
|
55
56
|
|
56
57
|
subject.refresh
|
57
58
|
end
|
@@ -59,9 +60,10 @@ RSpec.describe Alephant::Broker::LoadStrategy::Revalidate::Refresher do
|
|
59
60
|
context "there was a problem pushing a message onto the queue" do
|
60
61
|
it "does NOT put an 'inflight' message in the cache" do
|
61
62
|
expect(cache).to_not receive(:set)
|
62
|
-
expect(sqs_queue_double).to receive(:send_message).and_raise
|
63
63
|
|
64
|
-
expect
|
64
|
+
expect(fake_client).to receive(:send_message).and_raise
|
65
|
+
|
66
|
+
expect { subject.refresh }.to raise_error(RuntimeError)
|
65
67
|
end
|
66
68
|
end
|
67
69
|
end
|
@@ -21,14 +21,14 @@ describe Alephant::Broker::Application do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
let(:content) do
|
24
|
-
|
24
|
+
{
|
25
25
|
:content_type => "test/content",
|
26
26
|
:content => "Test",
|
27
27
|
:meta => {
|
28
28
|
"head_ETag" => "123",
|
29
29
|
"head_Last-Modified" => "Mon, 11 Apr 2016 10:39:57 GMT"
|
30
30
|
}
|
31
|
-
|
31
|
+
}
|
32
32
|
end
|
33
33
|
|
34
34
|
let(:sequencer_double) do
|
@@ -99,14 +99,14 @@ describe Alephant::Broker::Application do
|
|
99
99
|
allow(s3_double_with_etag).to receive(:get)
|
100
100
|
.with("test/location/with/options")
|
101
101
|
.and_return(
|
102
|
-
|
102
|
+
{
|
103
103
|
:content_type => "test/content",
|
104
104
|
:content => "Test",
|
105
105
|
:meta => {
|
106
106
|
"head_ETag" => "abc",
|
107
107
|
"head_Last-Modified" => "Mon, 11 Apr 2016 09:39:57 GMT"
|
108
108
|
}
|
109
|
-
|
109
|
+
}
|
110
110
|
)
|
111
111
|
|
112
112
|
allow(Alephant::Storage).to receive(:new) { s3_double_with_etag }
|
@@ -170,14 +170,14 @@ describe Alephant::Broker::Application do
|
|
170
170
|
allow(s3_double_with_etag).to receive(:get)
|
171
171
|
.with("test/location/with/options")
|
172
172
|
.and_return(
|
173
|
-
|
173
|
+
{
|
174
174
|
:content_type => "test/content",
|
175
175
|
:content => "Test",
|
176
176
|
:meta => {
|
177
177
|
"head_ETag" => "abc",
|
178
178
|
"head_Last-Modified" => "Mon, 11 Apr 2016 09:39:57 GMT"
|
179
179
|
}
|
180
|
-
|
180
|
+
}
|
181
181
|
)
|
182
182
|
|
183
183
|
allow(Alephant::Storage).to receive(:new) { s3_double_with_etag }
|
@@ -19,14 +19,14 @@ describe Alephant::Broker::Application do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
let(:content) do
|
22
|
-
|
22
|
+
{
|
23
23
|
:content_type => "test/content",
|
24
24
|
:content => "Test",
|
25
25
|
:meta => {
|
26
26
|
"head_ETag" => "123",
|
27
27
|
"head_Last-Modified" => "Mon, 11 Apr 2016 10:39:57 GMT"
|
28
28
|
}
|
29
|
-
|
29
|
+
}
|
30
30
|
end
|
31
31
|
|
32
32
|
let(:sequencer_double) do
|
@@ -145,14 +145,14 @@ describe Alephant::Broker::Application do
|
|
145
145
|
before do
|
146
146
|
allow(s3_double_batch).to receive(:get).and_return(
|
147
147
|
content,
|
148
|
-
|
148
|
+
{
|
149
149
|
:content_type => "test/content",
|
150
150
|
:content => "Test",
|
151
151
|
:meta => {
|
152
152
|
:head_ETag => "\"abc\"",
|
153
153
|
:"head_Last-Modified" => "Mon, 11 Apr 2016 09:39:57 GMT"
|
154
154
|
}
|
155
|
-
|
155
|
+
}
|
156
156
|
)
|
157
157
|
|
158
158
|
allow(Alephant::Storage).to receive(:new) { s3_double_batch }
|
@@ -194,14 +194,14 @@ describe Alephant::Broker::Application do
|
|
194
194
|
before do
|
195
195
|
allow(s3_double_batch).to receive(:get).and_return(
|
196
196
|
content,
|
197
|
-
|
197
|
+
{
|
198
198
|
:content_type => "test/content",
|
199
199
|
:content => "Test",
|
200
200
|
:meta => {
|
201
201
|
:head_ETag => "\"abc\"",
|
202
202
|
:"head_Last-Modified" => "Mon, 11 Apr 2016 09:39:57 GMT"
|
203
203
|
}
|
204
|
-
|
204
|
+
}
|
205
205
|
)
|
206
206
|
|
207
207
|
allow(Alephant::Storage).to receive(:new) { s3_double_batch }
|
@@ -240,14 +240,14 @@ describe Alephant::Broker::Application do
|
|
240
240
|
before do
|
241
241
|
allow(s3_double_batch).to receive(:get).and_return(
|
242
242
|
content,
|
243
|
-
|
243
|
+
{
|
244
244
|
:content_type => "test/content",
|
245
245
|
:content => "Test",
|
246
246
|
:meta => {
|
247
247
|
:head_ETag => "\"abc\"",
|
248
248
|
:"head_Last-Modified" => "Mon, 11 Apr 2016 09:39:57 GMT"
|
249
249
|
}
|
250
|
-
|
250
|
+
}
|
251
251
|
)
|
252
252
|
|
253
253
|
allow(Alephant::Storage).to receive(:new) { s3_double_batch }
|
@@ -281,10 +281,10 @@ describe Alephant::Broker::Application do
|
|
281
281
|
|
282
282
|
describe "S3 headers" do
|
283
283
|
let(:content) do
|
284
|
-
|
284
|
+
{
|
285
285
|
:content => "missing_content",
|
286
286
|
:meta => {}
|
287
|
-
|
287
|
+
}
|
288
288
|
end
|
289
289
|
let(:s3_double) do
|
290
290
|
instance_double(
|
@@ -352,13 +352,17 @@ describe Alephant::Broker::Application do
|
|
352
352
|
:content => "<p>Some data</p>",
|
353
353
|
:meta => {}
|
354
354
|
},
|
355
|
-
:get => "<p>Some data</p>"
|
355
|
+
:get => "<p>Some data</p>" # @TODO: What should cache return?
|
356
356
|
)
|
357
357
|
end
|
358
358
|
let(:s3_double) do
|
359
359
|
instance_double(
|
360
360
|
"Alephant::Storage",
|
361
|
-
:get =>
|
361
|
+
:get => {
|
362
|
+
:content_type => "test/html",
|
363
|
+
:content => "<p>Some data</p>",
|
364
|
+
:meta => {}
|
365
|
+
}
|
362
366
|
)
|
363
367
|
end
|
364
368
|
|
@@ -35,9 +35,8 @@ describe Alephant::Broker::Application do
|
|
35
35
|
let(:lookup_location_double) { instance_double(Alephant::Lookup::LookupLocation, location: 'test/location') }
|
36
36
|
let(:lookup_helper_double) { instance_double(Alephant::Lookup::LookupHelper, read: lookup_location_double) }
|
37
37
|
let(:storage_double) { instance_double(Alephant::Storage, get: content) }
|
38
|
-
|
39
|
-
let(:
|
40
|
-
let(:sqs_queues_double) { instance_double(AWS::SQS::QueueCollection, :url_for => 'example.com', :[] => sqs_queue_double) }
|
38
|
+
|
39
|
+
let(:fake_client) { Aws::SQS::Client.new(stub_responses: true) }
|
41
40
|
|
42
41
|
before do
|
43
42
|
allow_any_instance_of(Logger).to receive(:info)
|
@@ -45,7 +44,8 @@ describe Alephant::Broker::Application do
|
|
45
44
|
allow(Thread).to receive(:new).and_yield
|
46
45
|
allow(Alephant::Lookup).to receive(:create).and_return(lookup_helper_double)
|
47
46
|
allow(Alephant::Storage).to receive(:new).and_return(storage_double)
|
48
|
-
|
47
|
+
allow_any_instance_of(Alephant::Broker::LoadStrategy::Revalidate::Refresher).to receive(:client).and_return(fake_client)
|
48
|
+
fake_client.stub_responses(:get_queue_url, { queue_url: 'http://sqs.aws.myqueue/id' })
|
49
49
|
end
|
50
50
|
|
51
51
|
describe 'GET `/status`' do
|
@@ -82,7 +82,7 @@ describe Alephant::Broker::Application do
|
|
82
82
|
before do
|
83
83
|
allow(storage_double)
|
84
84
|
.to receive(:get)
|
85
|
-
.and_raise(
|
85
|
+
.and_raise(Aws::S3::Errors::NoSuchKey.new(nil, nil))
|
86
86
|
|
87
87
|
get('/component/test_component')
|
88
88
|
end
|
@@ -128,7 +128,7 @@ describe Alephant::Broker::Application do
|
|
128
128
|
before do
|
129
129
|
allow(storage_double)
|
130
130
|
.to receive(:get)
|
131
|
-
.and_raise(
|
131
|
+
.and_raise(Aws::S3::Errors::NoSuchKey.new(nil, nil))
|
132
132
|
|
133
133
|
post(path, batch_json, 'CONTENT_TYPE' => content_type)
|
134
134
|
end
|
@@ -157,7 +157,7 @@ describe Alephant::Broker::Application do
|
|
157
157
|
before do
|
158
158
|
allow(storage_double)
|
159
159
|
.to receive(:get)
|
160
|
-
.and_raise(
|
160
|
+
.and_raise(Aws::S3::Errors::NoSuchKey.new(nil, nil))
|
161
161
|
|
162
162
|
get(path, {}, 'CONTENT_TYPE' => content_type)
|
163
163
|
end
|
metadata
CHANGED
@@ -1,321 +1,349 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alephant-broker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BBC News
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
|
-
- -
|
17
|
+
- - ">="
|
17
18
|
- !ruby/object:Gem::Version
|
18
19
|
version: '0'
|
19
|
-
name: rspec
|
20
|
-
prerelease: false
|
21
20
|
type: :development
|
21
|
+
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec-nc
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
|
-
name: rspec-nc
|
34
|
-
prerelease: false
|
35
34
|
type: :development
|
35
|
+
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
+
name: guard
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
|
-
- -
|
45
|
+
- - ">="
|
45
46
|
- !ruby/object:Gem::Version
|
46
47
|
version: '0'
|
47
|
-
name: guard
|
48
|
-
prerelease: false
|
49
48
|
type: :development
|
49
|
+
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard-rspec
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
|
-
- -
|
59
|
+
- - ">="
|
59
60
|
- !ruby/object:Gem::Version
|
60
61
|
version: '0'
|
61
|
-
name: guard-rspec
|
62
|
-
prerelease: false
|
63
62
|
type: :development
|
63
|
+
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
70
71
|
requirement: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
72
|
-
- -
|
73
|
+
- - ">="
|
73
74
|
- !ruby/object:Gem::Version
|
74
75
|
version: '0'
|
75
|
-
name: pry
|
76
|
-
prerelease: false
|
77
76
|
type: :development
|
77
|
+
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry-remote
|
84
85
|
requirement: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
|
-
- -
|
87
|
+
- - ">="
|
87
88
|
- !ruby/object:Gem::Version
|
88
89
|
version: '0'
|
89
|
-
name: pry-remote
|
90
|
-
prerelease: false
|
91
90
|
type: :development
|
91
|
+
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry-nav
|
98
99
|
requirement: !ruby/object:Gem::Requirement
|
99
100
|
requirements:
|
100
|
-
- -
|
101
|
+
- - ">="
|
101
102
|
- !ruby/object:Gem::Version
|
102
103
|
version: '0'
|
103
|
-
name: pry-nav
|
104
|
-
prerelease: false
|
105
104
|
type: :development
|
105
|
+
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
+
name: rake-rspec
|
112
113
|
requirement: !ruby/object:Gem::Requirement
|
113
114
|
requirements:
|
114
|
-
- -
|
115
|
+
- - ">="
|
115
116
|
- !ruby/object:Gem::Version
|
116
117
|
version: 0.0.2
|
117
|
-
name: rake-rspec
|
118
|
-
prerelease: false
|
119
118
|
type: :development
|
119
|
+
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 0.0.2
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
+
name: bundler
|
126
127
|
requirement: !ruby/object:Gem::Requirement
|
127
128
|
requirements:
|
128
|
-
- - ~>
|
129
|
+
- - "~>"
|
129
130
|
- !ruby/object:Gem::Version
|
130
131
|
version: '1.5'
|
131
|
-
name: bundler
|
132
|
-
prerelease: false
|
133
132
|
type: :development
|
133
|
+
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - ~>
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '1.5'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
+
name: rake
|
140
141
|
requirement: !ruby/object:Gem::Requirement
|
141
142
|
requirements:
|
142
|
-
- -
|
143
|
+
- - ">="
|
143
144
|
- !ruby/object:Gem::Version
|
144
145
|
version: '0'
|
145
|
-
name: rake
|
146
|
-
prerelease: false
|
147
146
|
type: :development
|
147
|
+
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
+
name: rack
|
154
155
|
requirement: !ruby/object:Gem::Requirement
|
155
156
|
requirements:
|
156
|
-
- - <
|
157
|
+
- - "<"
|
157
158
|
- !ruby/object:Gem::Version
|
158
159
|
version: 2.0.0
|
159
|
-
name: rack
|
160
|
-
prerelease: false
|
161
160
|
type: :development
|
161
|
+
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - <
|
164
|
+
- - "<"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 2.0.0
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
+
name: rack-test
|
168
169
|
requirement: !ruby/object:Gem::Requirement
|
169
170
|
requirements:
|
170
|
-
- -
|
171
|
+
- - ">="
|
171
172
|
- !ruby/object:Gem::Version
|
172
173
|
version: '0'
|
173
|
-
name: rack-test
|
174
|
-
prerelease: false
|
175
174
|
type: :development
|
175
|
+
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- -
|
178
|
+
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
+
name: simplecov
|
182
183
|
requirement: !ruby/object:Gem::Requirement
|
183
184
|
requirements:
|
184
|
-
- -
|
185
|
+
- - ">="
|
185
186
|
- !ruby/object:Gem::Version
|
186
187
|
version: '0'
|
187
|
-
name: simplecov
|
188
|
-
prerelease: false
|
189
188
|
type: :development
|
189
|
+
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- -
|
192
|
+
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
+
name: timecop
|
196
197
|
requirement: !ruby/object:Gem::Requirement
|
197
198
|
requirements:
|
198
|
-
- -
|
199
|
+
- - ">="
|
199
200
|
- !ruby/object:Gem::Version
|
200
201
|
version: '0'
|
201
|
-
name: timecop
|
202
|
-
prerelease: false
|
203
202
|
type: :development
|
203
|
+
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- -
|
206
|
+
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
|
+
name: alephant-lookup
|
210
211
|
requirement: !ruby/object:Gem::Requirement
|
211
212
|
requirements:
|
212
|
-
- -
|
213
|
+
- - ">="
|
213
214
|
- !ruby/object:Gem::Version
|
214
|
-
version:
|
215
|
-
name: alephant-lookup
|
216
|
-
prerelease: false
|
215
|
+
version: '0'
|
217
216
|
type: :runtime
|
217
|
+
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- -
|
220
|
+
- - ">="
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
222
|
+
version: '0'
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
|
+
name: alephant-storage
|
224
225
|
requirement: !ruby/object:Gem::Requirement
|
225
226
|
requirements:
|
226
|
-
- -
|
227
|
+
- - ">="
|
227
228
|
- !ruby/object:Gem::Version
|
228
|
-
version:
|
229
|
-
name: alephant-storage
|
230
|
-
prerelease: false
|
229
|
+
version: '0'
|
231
230
|
type: :runtime
|
231
|
+
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
|
-
- -
|
234
|
+
- - ">="
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version:
|
236
|
+
version: '0'
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
|
+
name: alephant-logger
|
238
239
|
requirement: !ruby/object:Gem::Requirement
|
239
240
|
requirements:
|
240
|
-
- -
|
241
|
+
- - ">="
|
241
242
|
- !ruby/object:Gem::Version
|
242
|
-
version:
|
243
|
-
name: alephant-logger
|
244
|
-
prerelease: false
|
243
|
+
version: '0'
|
245
244
|
type: :runtime
|
245
|
+
prerelease: false
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
247
247
|
requirements:
|
248
|
-
- -
|
248
|
+
- - ">="
|
249
249
|
- !ruby/object:Gem::Version
|
250
|
-
version:
|
250
|
+
version: '0'
|
251
251
|
- !ruby/object:Gem::Dependency
|
252
|
+
name: alephant-sequencer
|
252
253
|
requirement: !ruby/object:Gem::Requirement
|
253
254
|
requirements:
|
254
|
-
- -
|
255
|
+
- - ">="
|
255
256
|
- !ruby/object:Gem::Version
|
256
257
|
version: '0'
|
257
|
-
name: alephant-sequencer
|
258
|
-
prerelease: false
|
259
258
|
type: :runtime
|
259
|
+
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
|
-
- -
|
262
|
+
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: '0'
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
|
+
name: aws-sdk-sqs
|
266
267
|
requirement: !ruby/object:Gem::Requirement
|
267
268
|
requirements:
|
268
|
-
- -
|
269
|
+
- - ">="
|
269
270
|
- !ruby/object:Gem::Version
|
270
271
|
version: '0'
|
271
|
-
name: dalli-elasticache
|
272
|
-
prerelease: false
|
273
272
|
type: :runtime
|
273
|
+
prerelease: false
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
275
275
|
requirements:
|
276
|
-
- -
|
276
|
+
- - ">="
|
277
277
|
- !ruby/object:Gem::Version
|
278
278
|
version: '0'
|
279
279
|
- !ruby/object:Gem::Dependency
|
280
|
+
name: aws-sdk-s3
|
280
281
|
requirement: !ruby/object:Gem::Requirement
|
281
282
|
requirements:
|
282
|
-
- -
|
283
|
+
- - ">="
|
283
284
|
- !ruby/object:Gem::Version
|
284
285
|
version: '0'
|
285
|
-
|
286
|
+
type: :runtime
|
286
287
|
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - ">="
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '0'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: dalli-elasticache
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - ">="
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '0'
|
287
300
|
type: :runtime
|
301
|
+
prerelease: false
|
288
302
|
version_requirements: !ruby/object:Gem::Requirement
|
289
303
|
requirements:
|
290
|
-
- -
|
304
|
+
- - ">="
|
291
305
|
- !ruby/object:Gem::Version
|
292
306
|
version: '0'
|
293
307
|
- !ruby/object:Gem::Dependency
|
308
|
+
name: faraday
|
294
309
|
requirement: !ruby/object:Gem::Requirement
|
295
310
|
requirements:
|
296
|
-
- -
|
311
|
+
- - ">="
|
297
312
|
- !ruby/object:Gem::Version
|
298
313
|
version: '0'
|
299
|
-
|
314
|
+
type: :runtime
|
300
315
|
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - ">="
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '0'
|
321
|
+
- !ruby/object:Gem::Dependency
|
322
|
+
name: crimp
|
323
|
+
requirement: !ruby/object:Gem::Requirement
|
324
|
+
requirements:
|
325
|
+
- - ">="
|
326
|
+
- !ruby/object:Gem::Version
|
327
|
+
version: '0'
|
301
328
|
type: :runtime
|
329
|
+
prerelease: false
|
302
330
|
version_requirements: !ruby/object:Gem::Requirement
|
303
331
|
requirements:
|
304
|
-
- -
|
332
|
+
- - ">="
|
305
333
|
- !ruby/object:Gem::Version
|
306
334
|
version: '0'
|
307
335
|
- !ruby/object:Gem::Dependency
|
336
|
+
name: listen
|
308
337
|
requirement: !ruby/object:Gem::Requirement
|
309
338
|
requirements:
|
310
|
-
- - ~>
|
339
|
+
- - "~>"
|
311
340
|
- !ruby/object:Gem::Version
|
312
341
|
version: 3.0.0
|
313
|
-
name: listen
|
314
|
-
prerelease: false
|
315
342
|
type: :runtime
|
343
|
+
prerelease: false
|
316
344
|
version_requirements: !ruby/object:Gem::Requirement
|
317
345
|
requirements:
|
318
|
-
- - ~>
|
346
|
+
- - "~>"
|
319
347
|
- !ruby/object:Gem::Version
|
320
348
|
version: 3.0.0
|
321
349
|
description: Brokers requests for alephant components
|
@@ -325,9 +353,9 @@ executables: []
|
|
325
353
|
extensions: []
|
326
354
|
extra_rdoc_files: []
|
327
355
|
files:
|
328
|
-
- .gitignore
|
329
|
-
- .ruby-version
|
330
|
-
- .travis.yml
|
356
|
+
- ".gitignore"
|
357
|
+
- ".ruby-version"
|
358
|
+
- ".travis.yml"
|
331
359
|
- Gemfile
|
332
360
|
- Guardfile
|
333
361
|
- LICENSE.txt
|
@@ -387,24 +415,24 @@ homepage: https://github.com/BBC-News/alephant-broker
|
|
387
415
|
licenses:
|
388
416
|
- MIT
|
389
417
|
metadata: {}
|
390
|
-
post_install_message:
|
418
|
+
post_install_message:
|
391
419
|
rdoc_options: []
|
392
420
|
require_paths:
|
393
421
|
- lib
|
394
422
|
required_ruby_version: !ruby/object:Gem::Requirement
|
395
423
|
requirements:
|
396
|
-
- -
|
424
|
+
- - ">="
|
397
425
|
- !ruby/object:Gem::Version
|
398
426
|
version: '0'
|
399
427
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
400
428
|
requirements:
|
401
|
-
- -
|
429
|
+
- - ">="
|
402
430
|
- !ruby/object:Gem::Version
|
403
431
|
version: '0'
|
404
432
|
requirements: []
|
405
|
-
rubyforge_project:
|
406
|
-
rubygems_version: 2.
|
407
|
-
signing_key:
|
433
|
+
rubyforge_project:
|
434
|
+
rubygems_version: 2.6.12
|
435
|
+
signing_key:
|
408
436
|
specification_version: 4
|
409
437
|
summary: Brokers requests for alephant components
|
410
438
|
test_files:
|