alephant-publisher-queue 2.5.0 → 2.6.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/alephant-publisher-queue.gemspec +4 -4
- data/lib/alephant/publisher/env.rb +2 -4
- data/lib/alephant/publisher/queue/options.rb +1 -1
- data/lib/alephant/publisher/queue/processor.rb +6 -4
- data/lib/alephant/publisher/queue/publisher.rb +20 -18
- data/lib/alephant/publisher/queue/revalidate_processor.rb +11 -9
- data/lib/alephant/publisher/queue/revalidate_writer.rb +4 -2
- data/lib/alephant/publisher/queue/sqs_helper/queue.rb +11 -7
- data/lib/alephant/publisher/queue/version.rb +1 -1
- data/spec/alephant/publisher/queue/processor_spec.rb +5 -4
- data/spec/alephant/publisher/queue/revalidate_processor_spec.rb +12 -11
- data/spec/alephant/publisher/queue/sqs_helper/archiver_spec.rb +2 -2
- data/spec/alephant/publisher/queue/sqs_helper/queue_spec.rb +2 -2
- data/spec/alephant/publisher/queue/writer_spec.rb +0 -2
- data/spec/alephant/publisher/queue_spec.rb +12 -14
- data/spec/spec_helper.rb +3 -1
- metadata +19 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d85acb1700dc11db1d701833055fc681c829de1
|
4
|
+
data.tar.gz: a409bff70bf7b7f3122d1eacf43dc0893c638ddc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ccf8e8b65b304ce50df32efa571ef3942d0bbd7675648aadb1d0c541665ebc7f4b2a135f4d3f2a1364404346b255d8ca66e25b231fbfe14909ea4c2cca53a7d
|
7
|
+
data.tar.gz: 24f6bc86e7397e5a0062a82357107d49ceef1dbb70a072015246399c4b9b901ed54e66e9a5a293e5a9b68108dcc9b699b242a26f02ea79a725d3a5afed6e235f
|
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
|
@@ -30,14 +30,14 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency "simplecov"
|
31
31
|
|
32
32
|
spec.add_runtime_dependency "rake"
|
33
|
-
spec.add_runtime_dependency "aws-sdk"
|
33
|
+
spec.add_runtime_dependency "aws-sdk-sqs"
|
34
34
|
spec.add_runtime_dependency "crimp"
|
35
35
|
spec.add_runtime_dependency "faraday"
|
36
36
|
spec.add_runtime_dependency "dalli-elasticache"
|
37
37
|
spec.add_runtime_dependency "alephant-support"
|
38
|
-
spec.add_runtime_dependency "alephant-sequencer"
|
38
|
+
spec.add_runtime_dependency "alephant-sequencer"
|
39
39
|
spec.add_runtime_dependency "alephant-storage"
|
40
|
-
spec.add_runtime_dependency "alephant-logger"
|
41
|
-
spec.add_runtime_dependency "alephant-lookup"
|
40
|
+
spec.add_runtime_dependency "alephant-logger"
|
41
|
+
spec.add_runtime_dependency "alephant-lookup"
|
42
42
|
spec.add_runtime_dependency "alephant-renderer"
|
43
43
|
end
|
@@ -1,12 +1,10 @@
|
|
1
|
-
require "aws-sdk"
|
1
|
+
require "aws-sdk-sqs"
|
2
2
|
require "yaml"
|
3
3
|
require "alephant/logger"
|
4
4
|
|
5
5
|
config_file = "config/aws.yaml"
|
6
6
|
|
7
|
-
AWS.eager_autoload!
|
8
|
-
|
9
7
|
if File.exist? config_file
|
10
8
|
config = YAML.load(File.read(config_file))
|
11
|
-
|
9
|
+
Aws.config.update(config)
|
12
10
|
end
|
@@ -10,10 +10,12 @@ module Alephant
|
|
10
10
|
@opts = opts
|
11
11
|
end
|
12
12
|
|
13
|
-
def consume(
|
14
|
-
return
|
15
|
-
|
16
|
-
|
13
|
+
def consume(message_collection)
|
14
|
+
return unless message_collection && message_collection.size > 0
|
15
|
+
|
16
|
+
message = message_collection.first
|
17
|
+
write(message)
|
18
|
+
message.delete
|
17
19
|
end
|
18
20
|
|
19
21
|
private
|
@@ -54,34 +54,36 @@ module Alephant
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def get_region
|
57
|
-
|
57
|
+
# @TODO: Where does region come from?
|
58
|
+
opts.queue[:sqs_account_region] || Aws.config[:region] || 'eu-west-1'
|
58
59
|
end
|
59
60
|
|
60
61
|
def sqs_client
|
61
|
-
@sqs_client ||=
|
62
|
+
@sqs_client ||= Aws::SQS::Client.new(sqs_queue_options)
|
62
63
|
end
|
63
64
|
|
64
65
|
def sqs_queue_options
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
"options" => ops,
|
69
|
-
"method" => "#{self.class}#sqs_queue_options"
|
70
|
-
)
|
71
|
-
end
|
72
|
-
end
|
66
|
+
options = {}
|
67
|
+
options[:endpoint] = ENV['AWS_SQS_ENDPOINT'] if ENV['AWS_SQS_ENDPOINT']
|
68
|
+
options[:region] = get_region
|
73
69
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
70
|
+
logger.info(
|
71
|
+
"event" => "SQSQueueOptionsConfigured",
|
72
|
+
"options" => options,
|
73
|
+
"method" => "#{self.class}#sqs_queue_options"
|
74
|
+
)
|
75
|
+
|
76
|
+
options
|
78
77
|
end
|
79
78
|
|
80
79
|
def aws_queue
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
sqs_client.
|
80
|
+
options = { queue_name: opts.queue[:sqs_queue_name] }
|
81
|
+
options[:queue_owner_aws_account_id] = opts.queue[:aws_account_id] if opts.queue[:aws_account_id]
|
82
|
+
|
83
|
+
queue_url = sqs_client.get_queue_url(options).queue_url
|
84
|
+
|
85
|
+
resource = Aws::SQS::Resource.new(client: sqs_client)
|
86
|
+
resource.queue(queue_url)
|
85
87
|
end
|
86
88
|
end
|
87
89
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'faraday'
|
2
|
-
require
|
2
|
+
require "aws-sdk-sqs"
|
3
3
|
require 'crimp'
|
4
4
|
require 'alephant/publisher/queue/processor'
|
5
5
|
require 'alephant/publisher/queue/revalidate_writer'
|
6
6
|
require 'json'
|
7
7
|
require 'alephant/logger'
|
8
|
+
require 'ostruct'
|
8
9
|
|
9
10
|
module Alephant
|
10
11
|
module Publisher
|
@@ -20,16 +21,19 @@ module Alephant
|
|
20
21
|
@http_response_processor = http_response_processor
|
21
22
|
end
|
22
23
|
|
23
|
-
def consume(
|
24
|
-
return
|
24
|
+
def consume(message_collection)
|
25
|
+
return unless message_collection && message_collection.size > 0
|
26
|
+
|
27
|
+
message = message_collection.first
|
25
28
|
|
26
29
|
msg_body = message_content(message)
|
27
30
|
|
31
|
+
# @TODO: This is not a http response but a data struct. We should look at renaming this.
|
28
32
|
http_response = {
|
29
33
|
renderer_id: msg_body.fetch(:id),
|
30
34
|
http_options: msg_body,
|
31
35
|
http_response: get(message),
|
32
|
-
ttl: http_response_processor.ttl(msg_body)
|
36
|
+
ttl: http_response_processor.ttl(msg_body).to_s # @TODO: What happens if this is nil? Storage requires this to be a string.
|
33
37
|
}
|
34
38
|
|
35
39
|
http_message = build_http_message(message, ::JSON.generate(http_response))
|
@@ -76,11 +80,9 @@ module Alephant
|
|
76
80
|
end
|
77
81
|
|
78
82
|
def build_http_message(message, http_response)
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
http_message.instance_variable_set(:@body, http_response)
|
83
|
-
http_message
|
83
|
+
OpenStruct.new({
|
84
|
+
body: http_response
|
85
|
+
})
|
84
86
|
end
|
85
87
|
|
86
88
|
def get(message)
|
@@ -72,11 +72,13 @@ module Alephant
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def storage_opts
|
75
|
-
{ ttl: message_content[:ttl] }
|
75
|
+
{ ttl: message_content[:ttl] } # @TODO: What happens if this is nil?
|
76
76
|
end
|
77
77
|
|
78
78
|
def config
|
79
|
-
@
|
79
|
+
# @TODO: This part needs refactoring
|
80
|
+
@config[:renderer_id] = message_content.fetch(:renderer_id)
|
81
|
+
@config
|
80
82
|
end
|
81
83
|
|
82
84
|
def http_data
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require "aws-sdk"
|
1
|
+
require "aws-sdk-sqs"
|
2
2
|
require "alephant/logger"
|
3
3
|
|
4
4
|
module Alephant
|
@@ -27,7 +27,7 @@ module Alephant
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def message
|
30
|
-
receive.tap { |m| process(m)
|
30
|
+
receive.tap { |m| process(m) }
|
31
31
|
end
|
32
32
|
|
33
33
|
private
|
@@ -43,13 +43,16 @@ module Alephant
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def process(m)
|
46
|
+
return unless m.size > 0
|
47
|
+
|
46
48
|
logger.metric "MessagesReceived"
|
47
49
|
logger.info(
|
48
50
|
"event" => "QueueMessageReceived",
|
49
|
-
"messageId" => m.
|
51
|
+
"messageId" => m.first.message_id,
|
50
52
|
"method" => "#{self.class}#process"
|
51
53
|
)
|
52
|
-
|
54
|
+
# @TODO: Look at archiver as should support message from collection.
|
55
|
+
archive m.first
|
53
56
|
end
|
54
57
|
|
55
58
|
def archive(m)
|
@@ -66,9 +69,10 @@ module Alephant
|
|
66
69
|
end
|
67
70
|
|
68
71
|
def receive
|
69
|
-
queue.
|
70
|
-
:visibility_timeout
|
71
|
-
:wait_time_seconds
|
72
|
+
queue.receive_messages(
|
73
|
+
:visibility_timeout => timeout,
|
74
|
+
:wait_time_seconds => wait_time,
|
75
|
+
:max_number_of_messages => 1
|
72
76
|
)
|
73
77
|
end
|
74
78
|
end
|
@@ -11,11 +11,12 @@ describe Alephant::Publisher::Queue::Processor do
|
|
11
11
|
).to receive(:run!)
|
12
12
|
end
|
13
13
|
|
14
|
-
describe "#consume
|
14
|
+
describe "#consume" do
|
15
15
|
it "Consume the message and deletes it" do
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
message = instance_double(Aws::SQS::Message, :delete => nil)
|
17
|
+
message_collection = [message]
|
18
|
+
expect(message).to receive(:delete)
|
19
|
+
subject.consume(message_collection)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
end
|
@@ -32,7 +32,8 @@ RSpec.describe Alephant::Publisher::Queue::RevalidateProcessor do
|
|
32
32
|
let(:cache_double) { instance_double(Dalli::Client, delete: nil) }
|
33
33
|
let(:elasticache_double) { instance_double(Dalli::ElastiCache, client: cache_double) }
|
34
34
|
|
35
|
-
let(:message) { instance_double(
|
35
|
+
let(:message) { instance_double(Aws::SQS::Message, body: JSON.generate(message_body), delete: nil) }
|
36
|
+
let(:message_collection) { [message] }
|
36
37
|
let(:message_body) { { id: '', batch_id: '', options: {} } }
|
37
38
|
|
38
39
|
before do
|
@@ -64,7 +65,7 @@ RSpec.describe Alephant::Publisher::Queue::RevalidateProcessor do
|
|
64
65
|
|
65
66
|
expect(writer_double).to receive(:run!)
|
66
67
|
|
67
|
-
subject.consume(
|
68
|
+
subject.consume(message_collection)
|
68
69
|
end
|
69
70
|
|
70
71
|
it 'passes the response to the http_response_processor' do
|
@@ -73,7 +74,7 @@ RSpec.describe Alephant::Publisher::Queue::RevalidateProcessor do
|
|
73
74
|
.with(message_body, resp_status, resp_body)
|
74
75
|
.and_call_original
|
75
76
|
|
76
|
-
subject.consume(
|
77
|
+
subject.consume(message_collection)
|
77
78
|
end
|
78
79
|
|
79
80
|
it "calls the 'ttl' method on the http_response_processor" do
|
@@ -82,19 +83,19 @@ RSpec.describe Alephant::Publisher::Queue::RevalidateProcessor do
|
|
82
83
|
.with(message_body)
|
83
84
|
.and_call_original
|
84
85
|
|
85
|
-
subject.consume(
|
86
|
+
subject.consume(message_collection)
|
86
87
|
end
|
87
88
|
|
88
89
|
it 'deletes the message from the queue' do
|
89
90
|
expect(message).to receive(:delete)
|
90
91
|
|
91
|
-
subject.consume(
|
92
|
+
subject.consume(message_collection)
|
92
93
|
end
|
93
94
|
|
94
95
|
it "removes the 'inflight' cache message" do
|
95
96
|
expect(cache_double).to receive(:delete)
|
96
97
|
|
97
|
-
subject.consume(
|
98
|
+
subject.consume(message_collection)
|
98
99
|
end
|
99
100
|
end
|
100
101
|
|
@@ -106,34 +107,34 @@ RSpec.describe Alephant::Publisher::Queue::RevalidateProcessor do
|
|
106
107
|
it 'does not call #run! on the writer' do
|
107
108
|
expect(writer_double).to_not receive(:run!)
|
108
109
|
|
109
|
-
expect { subject.consume(
|
110
|
+
expect { subject.consume(message_collection) }
|
110
111
|
.to raise_error(Faraday::TimeoutError)
|
111
112
|
end
|
112
113
|
|
113
114
|
it 'does NOT delele the message from the queue' do
|
114
115
|
expect(message).to_not receive(:delete)
|
115
116
|
|
116
|
-
expect { subject.consume(
|
117
|
+
expect { subject.consume(message_collection) }
|
117
118
|
.to raise_error(Faraday::TimeoutError)
|
118
119
|
end
|
119
120
|
|
120
121
|
it "does not remove the 'inflight' cache message" do
|
121
122
|
expect(cache_double).to_not receive(:delete)
|
122
123
|
|
123
|
-
expect { subject.consume(
|
124
|
+
expect { subject.consume(message_collection) }
|
124
125
|
.to raise_error(Faraday::TimeoutError)
|
125
126
|
end
|
126
127
|
end
|
127
128
|
end
|
128
129
|
|
129
130
|
context 'when there is no message passed through' do
|
130
|
-
let(:
|
131
|
+
let(:message_collection) { [] }
|
131
132
|
|
132
133
|
it 'does nothing' do
|
133
134
|
expect(writer_double).to_not receive(:run!)
|
134
135
|
expect(cache_double).to_not receive(:delete)
|
135
136
|
|
136
|
-
subject.consume(
|
137
|
+
subject.consume(message_collection)
|
137
138
|
end
|
138
139
|
end
|
139
140
|
end
|
@@ -2,12 +2,12 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Alephant::Publisher::Queue::SQSHelper::Archiver do
|
4
4
|
let(:storage) { instance_double(Alephant::Storage, :put => nil) }
|
5
|
-
let(:queue) { instance_double(
|
5
|
+
let(:queue) { instance_double(Aws::SQS::Queue, :url => nil) }
|
6
6
|
let(:msg_body) { { :Message => JSON.generate(msg_uri) } }
|
7
7
|
let(:msg_uri) { { :uri => "/content/asset/newsbeat" } }
|
8
8
|
let(:message) do
|
9
9
|
instance_double(
|
10
|
-
"
|
10
|
+
"Aws::SQS::ReceivedMessage",
|
11
11
|
:id => "id",
|
12
12
|
:md5 => "qux",
|
13
13
|
:queue => queue,
|
@@ -6,7 +6,7 @@ describe Alephant::Publisher::Queue::SQSHelper::Queue do
|
|
6
6
|
m = double("message").as_null_object
|
7
7
|
q = double("queue").as_null_object
|
8
8
|
|
9
|
-
expect(q).to receive(:
|
9
|
+
expect(q).to receive(:receive_messages).and_return(m)
|
10
10
|
|
11
11
|
instance = Alephant::Publisher::Queue::SQSHelper::Queue.new(q)
|
12
12
|
|
@@ -18,7 +18,7 @@ describe Alephant::Publisher::Queue::SQSHelper::Queue do
|
|
18
18
|
m = double("message").as_null_object
|
19
19
|
q = double("queue").as_null_object
|
20
20
|
|
21
|
-
expect(q).to receive(:
|
21
|
+
expect(q).to receive(:receive_messages).and_return(m)
|
22
22
|
expect(a).to receive(:see).with(m)
|
23
23
|
|
24
24
|
instance = Alephant::Publisher::Queue::SQSHelper::Queue.new(q, a)
|
@@ -1,19 +1,20 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Alephant::Publisher::Queue do
|
4
|
-
let(:options)
|
5
|
-
let(:
|
6
|
-
let(:client_double) { double(AWS::SQS, :queues => queue_double) }
|
7
|
-
let(:queue_double) do
|
8
|
-
double("AWS::SQS::QueueCollection", :[] => queue, :url_for => nil)
|
9
|
-
end
|
4
|
+
let(:options) { Alephant::Publisher::Queue::Options.new }
|
5
|
+
let(:fake_client) { Aws::SQS::Client.new(stub_responses: true) }
|
10
6
|
|
11
7
|
before(:each) do
|
12
|
-
|
8
|
+
allow_any_instance_of(Alephant::Publisher::Queue::Publisher).to receive(:sqs_client).and_return(fake_client)
|
9
|
+
fake_client.stub_responses(:get_queue_url, { queue_url: 'http://sqs.aws.myqueue/id' })
|
13
10
|
end
|
14
11
|
|
15
12
|
describe ".create" do
|
16
13
|
it "sets parser, sequencer, queue and writer" do
|
14
|
+
options.add_queue(
|
15
|
+
:sqs_queue_name => "bar",
|
16
|
+
:aws_account_id => "foo"
|
17
|
+
)
|
17
18
|
instance = Alephant::Publisher::Queue.create(options)
|
18
19
|
expect(instance.queue)
|
19
20
|
.to be_a Alephant::Publisher::Queue::SQSHelper::Queue
|
@@ -27,12 +28,9 @@ describe Alephant::Publisher::Queue do
|
|
27
28
|
:aws_account_id => "foo"
|
28
29
|
)
|
29
30
|
|
30
|
-
|
31
|
-
"bar",
|
32
|
-
:queue_owner_aws_account_id => "foo"
|
33
|
-
)
|
31
|
+
publisher = Alephant::Publisher::Queue.create(options)
|
34
32
|
|
35
|
-
|
33
|
+
expect(publisher.queue.queue).to be_a(Aws::SQS::Queue)
|
36
34
|
end
|
37
35
|
end
|
38
36
|
|
@@ -41,9 +39,9 @@ describe Alephant::Publisher::Queue do
|
|
41
39
|
options = Alephant::Publisher::Queue::Options.new
|
42
40
|
options.add_queue(:sqs_queue_name => "bar")
|
43
41
|
|
44
|
-
|
42
|
+
publisher = Alephant::Publisher::Queue.create(options)
|
45
43
|
|
46
|
-
|
44
|
+
expect(publisher.queue.queue).to be_a(Aws::SQS::Queue)
|
47
45
|
end
|
48
46
|
end
|
49
47
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alephant-publisher-queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BBC News
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -179,19 +179,19 @@ dependencies:
|
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name: aws-sdk
|
182
|
+
name: aws-sdk-sqs
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- - "
|
185
|
+
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
187
|
+
version: '0'
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- - "
|
192
|
+
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
194
|
+
version: '0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: crimp
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -252,16 +252,16 @@ dependencies:
|
|
252
252
|
name: alephant-sequencer
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
254
254
|
requirements:
|
255
|
-
- - "
|
255
|
+
- - ">="
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version: '
|
257
|
+
version: '0'
|
258
258
|
type: :runtime
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
|
-
- - "
|
262
|
+
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version: '
|
264
|
+
version: '0'
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: alephant-storage
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -280,30 +280,30 @@ dependencies:
|
|
280
280
|
name: alephant-logger
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|
282
282
|
requirements:
|
283
|
-
- - "
|
283
|
+
- - ">="
|
284
284
|
- !ruby/object:Gem::Version
|
285
|
-
version: '
|
285
|
+
version: '0'
|
286
286
|
type: :runtime
|
287
287
|
prerelease: false
|
288
288
|
version_requirements: !ruby/object:Gem::Requirement
|
289
289
|
requirements:
|
290
|
-
- - "
|
290
|
+
- - ">="
|
291
291
|
- !ruby/object:Gem::Version
|
292
|
-
version: '
|
292
|
+
version: '0'
|
293
293
|
- !ruby/object:Gem::Dependency
|
294
294
|
name: alephant-lookup
|
295
295
|
requirement: !ruby/object:Gem::Requirement
|
296
296
|
requirements:
|
297
|
-
- - "
|
297
|
+
- - ">="
|
298
298
|
- !ruby/object:Gem::Version
|
299
|
-
version: '
|
299
|
+
version: '0'
|
300
300
|
type: :runtime
|
301
301
|
prerelease: false
|
302
302
|
version_requirements: !ruby/object:Gem::Requirement
|
303
303
|
requirements:
|
304
|
-
- - "
|
304
|
+
- - ">="
|
305
305
|
- !ruby/object:Gem::Version
|
306
|
-
version: '
|
306
|
+
version: '0'
|
307
307
|
- !ruby/object:Gem::Dependency
|
308
308
|
name: alephant-renderer
|
309
309
|
requirement: !ruby/object:Gem::Requirement
|