emque-consuming 1.5.0 → 1.9.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 +5 -5
- data/.github/workflows/ci.yml +27 -0
- data/CHANGELOG.md +7 -0
- data/README.md +6 -4
- data/emque-consuming.gemspec +4 -4
- data/lib/emque/consuming/adapters/rabbit_mq/delayed_message_worker.rb +4 -2
- data/lib/emque/consuming/adapters/rabbit_mq/error_worker.rb +1 -3
- data/lib/emque/consuming/adapters/rabbit_mq/worker.rb +16 -15
- data/lib/emque/consuming/configuration.rb +6 -1
- data/lib/emque/consuming/consumer.rb +25 -0
- data/lib/emque/consuming/consumer/common.rb +0 -28
- data/lib/emque/consuming/core.rb +5 -3
- data/lib/emque/consuming/runner.rb +3 -1
- data/lib/emque/consuming/version.rb +1 -1
- metadata +19 -19
- data/.travis.yml +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 4c743d09735f9d7cef0e9afd1c352159e1502abceed3d05fc1132a33597401a5
|
|
4
|
+
data.tar.gz: c22b17e397c032fc2251393b93feb39558a996258d5c27382b9b3397416a5f61
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ea654910256e56c42cf3ef77d88ae0f3f4f57e304b99b54097f36695321dc2a74d2010436ec97b115d1f52895fe25412aeeaa1f49ad8b4e95c0cebf651b730c5
|
|
7
|
+
data.tar.gz: c5f32b23b28004f8d5ba6f9aafedda6a99ce75b5fe1c136cbea5aea74152b9ef99b01ac8b797eeae5a0f30d60189db39a3e0643251b0a90e2adc76a8a1d54ac5
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
ruby: [ '2.3.8', '2.4.10', '2.5.9', '2.6.7', '2.7.3' ]
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v2
|
|
20
|
+
- name: Set up Ruby
|
|
21
|
+
uses: ruby/setup-ruby@v1
|
|
22
|
+
with:
|
|
23
|
+
ruby-version: ${{ matrix.ruby }}
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: bundle install
|
|
26
|
+
- name: Run tests
|
|
27
|
+
run: bundle exec rake
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Emque Consuming CHANGELOG
|
|
2
2
|
|
|
3
|
+
- [Add support for running in Kubernetes](https://github.com/emque/emque-consuming/pull/84) (1.9.0)
|
|
4
|
+
- [Migrate to GitHub Actions](https://github.com/emque/emque-consuming/pull/82) (1.8.1)
|
|
5
|
+
- [Add prefetch for DelayedMessageWorker](https://github.com/emque/emque-consuming/pull/81) (1.8.0)
|
|
6
|
+
- [Update Rake to fix CVE-2020-8130](https://github.com/emque/emque-consuming/pull/80) (1.7.1)
|
|
7
|
+
- [Update pipe-ruby to remove error handling](https://github.com/emque/emque-consuming/pull/78) 1.7.0
|
|
8
|
+
- [Fixes bug with Bunny 2.12 failing when exchange names are symbols](https://github.com/emque/emque-consuming/pull/77) 1.6.1
|
|
9
|
+
- [Re-enable pipe-ruby `raise_on_error` option to fix automatic retries directing messages to the error queue](https://github.com/emque/emque-consuming/pull/75) 1.6.0
|
|
3
10
|
- [Update the puma gem to allow v3](https://github.com/emque/emque-consuming/pull/72) 1.5.0
|
|
4
11
|
- [Disable pipe-ruby `raise_on_error` option to prevent duplicate erorrs](https://github.com/emque/emque-consuming/pull/74) 1.4.0
|
|
5
12
|
- [Update minimum Ruby version to 2.3](https://github.com/emque/emque-consuming/pull/68) 1.3.0
|
data/README.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
[](https://travis-ci.org/emque/emque-consuming)
|
|
2
|
-
|
|
3
1
|
# Emque::Consuming
|
|
4
2
|
|
|
3
|
+

|
|
4
|
+
[](https://badge.fury.io/rb/emque-consuming)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
|
|
5
7
|
Emque Consuming is a Ruby application framework that includes everything needed
|
|
6
8
|
to create and run application capable of consuming messages from a message
|
|
7
9
|
broker in a Pub/sub architecture. Messages can be produced with the
|
|
@@ -10,7 +12,7 @@ broker in a Pub/sub architecture. Messages can be produced with the
|
|
|
10
12
|
## Adapters
|
|
11
13
|
|
|
12
14
|
We currently only support RabbitMQ. If you would like to add your own adapter,
|
|
13
|
-
take a look at [the adapters directory](https://github.com/emque/emque-consuming/tree/
|
|
15
|
+
take a look at [the adapters directory](https://github.com/emque/emque-consuming/tree/main/lib/emque/consuming/adapters).
|
|
14
16
|
|
|
15
17
|
## Installation
|
|
16
18
|
|
|
@@ -135,7 +137,7 @@ class EventsConsumer
|
|
|
135
137
|
|
|
136
138
|
def new_event(message)
|
|
137
139
|
# NOTE: message is an immutable Virtus (https://github.com/solnic/virtus) Value Object.
|
|
138
|
-
# Check it out here: https://github.com/emque/emque-consuming/blob/
|
|
140
|
+
# Check it out here: https://github.com/emque/emque-consuming/blob/main/lib/emque/consuming/message.rb
|
|
139
141
|
|
|
140
142
|
# You don't have to use pipe (https://github.com/teamsnap/pipe-ruby), but we love it!
|
|
141
143
|
pipe(message, :through => [
|
data/emque-consuming.gemspec
CHANGED
|
@@ -6,7 +6,7 @@ require "emque/consuming/version"
|
|
|
6
6
|
Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "emque-consuming"
|
|
8
8
|
spec.version = Emque::Consuming::VERSION
|
|
9
|
-
spec.authors = ["Ryan Williams", "Dan Matthews"]
|
|
9
|
+
spec.authors = ["Ryan Williams", "Dan Matthews", "Paul Hanyzewski"]
|
|
10
10
|
spec.email = ["oss@teamsnap.com"]
|
|
11
11
|
spec.summary = %q{Microservices framework for Ruby}
|
|
12
12
|
spec.summary = %q{Microservices framework for Ruby}
|
|
@@ -24,11 +24,11 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
spec.add_dependency "oj", "~> 2.18.5"
|
|
25
25
|
spec.add_dependency "virtus", "~> 1.0"
|
|
26
26
|
spec.add_dependency "puma", "~> 3.12"
|
|
27
|
-
spec.add_dependency "pipe-ruby", "~>
|
|
27
|
+
spec.add_dependency "pipe-ruby", "~> 1.0"
|
|
28
28
|
spec.add_dependency "inflecto", "~> 0.0.2"
|
|
29
29
|
|
|
30
|
-
spec.add_development_dependency "bundler", "
|
|
31
|
-
spec.add_development_dependency "rake", "
|
|
30
|
+
spec.add_development_dependency "bundler", ">= 1.17.3"
|
|
31
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
|
32
32
|
spec.add_development_dependency "rspec", "~> 3.3"
|
|
33
33
|
spec.add_development_dependency "bunny", "~> 2.11.0"
|
|
34
34
|
spec.add_development_dependency "timecop", "~> 0.7.1"
|
|
@@ -18,6 +18,10 @@ module Emque
|
|
|
18
18
|
def initialize(connection)
|
|
19
19
|
self.channel = connection.create_channel
|
|
20
20
|
|
|
21
|
+
if config.adapter.options[:prefetch]
|
|
22
|
+
channel.prefetch(config.adapter.options[:prefetch])
|
|
23
|
+
end
|
|
24
|
+
|
|
21
25
|
self.delayed_message_exchange = channel.exchange(
|
|
22
26
|
"emque.#{config.app_name}.delayed_message",
|
|
23
27
|
{
|
|
@@ -69,8 +73,6 @@ module Emque
|
|
|
69
73
|
::Emque::Consuming::Consumer.new.consume(:process, message)
|
|
70
74
|
channel.ack(delivery_info.delivery_tag)
|
|
71
75
|
rescue StandardError => exception
|
|
72
|
-
logger.error "#{log_prefix} #{exception.class}: #{exception.message}"
|
|
73
|
-
exception.backtrace.each { |bt| logger.error "#{log_prefix} #{bt}" }
|
|
74
76
|
if retryable_errors.any? { |error| exception.class.to_s =~ /#{error}/ }
|
|
75
77
|
retry_error(delivery_info, metadata, payload, exception)
|
|
76
78
|
else
|
|
@@ -15,7 +15,7 @@ module Emque
|
|
|
15
15
|
def retry_errors
|
|
16
16
|
logger.info "#{log_prefix} starting"
|
|
17
17
|
channel.open if channel.closed?
|
|
18
|
-
error_queue.message_count.times do
|
|
18
|
+
[error_queue.message_count, 100].min.times do
|
|
19
19
|
delivery_info, properties, payload = error_queue.pop(
|
|
20
20
|
{:manual_ack => true}
|
|
21
21
|
)
|
|
@@ -56,8 +56,6 @@ module Emque
|
|
|
56
56
|
::Emque::Consuming::Consumer.new.consume(:process, message)
|
|
57
57
|
channel.ack(delivery_info.delivery_tag)
|
|
58
58
|
rescue StandardError => exception
|
|
59
|
-
logger.error "#{log_prefix} #{exception.class}: #{exception.message}"
|
|
60
|
-
exception.backtrace.each { |bt| logger.error "#{log_prefix} #{bt}" }
|
|
61
59
|
channel.nack(delivery_info.delivery_tag)
|
|
62
60
|
end
|
|
63
61
|
end
|
|
@@ -31,19 +31,22 @@ module Emque
|
|
|
31
31
|
channel.prefetch(config.adapter.options[:prefetch])
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
self.queue =
|
|
35
|
-
|
|
36
|
-
.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
.
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
self.queue = channel
|
|
35
|
+
.queue(
|
|
36
|
+
"emque.#{config.app_name}.#{topic}",
|
|
37
|
+
:durable => config.adapter.options[:durable],
|
|
38
|
+
:auto_delete => config.adapter.options[:auto_delete],
|
|
39
|
+
:arguments => {
|
|
40
|
+
"x-dead-letter-exchange" => "#{config.app_name}.error"
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
.bind(
|
|
44
|
+
channel.fanout(
|
|
45
|
+
topic.to_s,
|
|
46
|
+
:durable => true,
|
|
47
|
+
:auto_delete => false,
|
|
48
|
+
)
|
|
49
|
+
)
|
|
47
50
|
end
|
|
48
51
|
|
|
49
52
|
def start
|
|
@@ -79,8 +82,6 @@ module Emque
|
|
|
79
82
|
::Emque::Consuming::Consumer.new.consume(:process, message)
|
|
80
83
|
channel.ack(delivery_info.delivery_tag)
|
|
81
84
|
rescue StandardError => exception
|
|
82
|
-
logger.error "#{log_prefix} #{exception.class}: #{exception.message}"
|
|
83
|
-
exception.backtrace.each { |bt| logger.error "#{log_prefix} #{bt}" }
|
|
84
85
|
if enable_delayed_message
|
|
85
86
|
begin
|
|
86
87
|
publish_to_delayed_message(delivery_info, metadata, payload)
|
|
@@ -8,7 +8,7 @@ module Emque
|
|
|
8
8
|
:error_limit, :error_expiration, :retryable_errors,
|
|
9
9
|
:retryable_error_limit, :status, :status_port, :status_host,
|
|
10
10
|
:socket_path, :shutdown_handlers
|
|
11
|
-
attr_writer :env, :log_level
|
|
11
|
+
attr_writer :env, :log_level, :log_formatter
|
|
12
12
|
|
|
13
13
|
def initialize
|
|
14
14
|
@app_name = ""
|
|
@@ -19,6 +19,7 @@ module Emque
|
|
|
19
19
|
@error_limit = 5
|
|
20
20
|
@error_expiration = 3600 # 60 minutes
|
|
21
21
|
@log_level = nil
|
|
22
|
+
@log_formatter = nil
|
|
22
23
|
@retryable_errors = []
|
|
23
24
|
@retryable_error_limit = 3
|
|
24
25
|
@status_port = 10000
|
|
@@ -40,6 +41,10 @@ module Emque
|
|
|
40
41
|
@log_level ||= Logger::INFO
|
|
41
42
|
end
|
|
42
43
|
|
|
44
|
+
def log_formatter
|
|
45
|
+
@log_formatter ||= ::Logger::Formatter.new
|
|
46
|
+
end
|
|
47
|
+
|
|
43
48
|
def set_adapter(name, options = {})
|
|
44
49
|
@adapter = Emque::Consuming::Adapter.new(name, options)
|
|
45
50
|
end
|
|
@@ -11,6 +11,9 @@ module Emque
|
|
|
11
11
|
|
|
12
12
|
def process(message)
|
|
13
13
|
pipe(message, :through => [:parse, :route])
|
|
14
|
+
rescue => e
|
|
15
|
+
handle_error(e, message)
|
|
16
|
+
raise
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
private
|
|
@@ -29,6 +32,28 @@ module Emque
|
|
|
29
32
|
message
|
|
30
33
|
)
|
|
31
34
|
end
|
|
35
|
+
|
|
36
|
+
def handle_error(e, subject)
|
|
37
|
+
context = {
|
|
38
|
+
:consumer => self.class.name,
|
|
39
|
+
:message => {
|
|
40
|
+
:current => subject.values,
|
|
41
|
+
:original => subject.original
|
|
42
|
+
},
|
|
43
|
+
:topic => subject.topic
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# log the error by default
|
|
47
|
+
Emque::Consuming.logger.error("Error consuming message #{e}")
|
|
48
|
+
Emque::Consuming.logger.error(context)
|
|
49
|
+
Emque::Consuming.logger.error e.backtrace.join("\n") unless e.backtrace.nil?
|
|
50
|
+
|
|
51
|
+
Emque::Consuming.config.error_handlers.each do |handler|
|
|
52
|
+
handler.call(e, context)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
Emque::Consuming.application.instance.notice_error(context)
|
|
56
|
+
end
|
|
32
57
|
end
|
|
33
58
|
end
|
|
34
59
|
end
|
|
@@ -16,7 +16,6 @@ module Emque
|
|
|
16
16
|
def self.included(descendant)
|
|
17
17
|
descendant.class_eval do
|
|
18
18
|
attr_reader :message
|
|
19
|
-
private :handle_error, :pipe
|
|
20
19
|
end
|
|
21
20
|
end
|
|
22
21
|
|
|
@@ -26,36 +25,9 @@ module Emque
|
|
|
26
25
|
|
|
27
26
|
def pipe_config
|
|
28
27
|
@pipe_config ||= Pipe::Config.new(
|
|
29
|
-
:error_handlers => [method(:handle_error)],
|
|
30
|
-
:raise_on_error => false,
|
|
31
28
|
:stop_on => ->(msg, _, _) { !(msg.respond_to?(:continue?) && msg.continue?) }
|
|
32
29
|
)
|
|
33
30
|
end
|
|
34
|
-
|
|
35
|
-
def handle_error(e, method:, subject:)
|
|
36
|
-
context = {
|
|
37
|
-
:consumer => self.class.name,
|
|
38
|
-
:message => {
|
|
39
|
-
:current => subject.values,
|
|
40
|
-
:original => subject.original
|
|
41
|
-
},
|
|
42
|
-
:offset => subject.offset,
|
|
43
|
-
:partition => subject.partition,
|
|
44
|
-
:pipe_method => method,
|
|
45
|
-
:topic => subject.topic
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
# log the error by default
|
|
49
|
-
Emque::Consuming.logger.error("Error consuming message #{e}")
|
|
50
|
-
Emque::Consuming.logger.error(context)
|
|
51
|
-
Emque::Consuming.logger.error e.backtrace.join("\n") unless e.backtrace.nil?
|
|
52
|
-
|
|
53
|
-
Emque::Consuming.config.error_handlers.each do |handler|
|
|
54
|
-
handler.call(e, context)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
Emque::Consuming.application.instance.notice_error(context)
|
|
58
|
-
end
|
|
59
31
|
end
|
|
60
32
|
end
|
|
61
33
|
end
|
data/lib/emque/consuming/core.rb
CHANGED
|
@@ -50,9 +50,11 @@ module Emque
|
|
|
50
50
|
)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
def initialize_logger
|
|
54
|
-
|
|
53
|
+
def initialize_logger(daemonized: false)
|
|
54
|
+
target = daemonized ? logfile : STDOUT
|
|
55
|
+
Emque::Consuming::Logging.initialize_logger(target)
|
|
55
56
|
Emque::Consuming.logger.level = config.log_level
|
|
57
|
+
Emque::Consuming.logger.formatter = config.log_formatter
|
|
56
58
|
Celluloid.logger = Emque::Consuming.logger
|
|
57
59
|
end
|
|
58
60
|
|
|
@@ -82,7 +84,7 @@ module Emque
|
|
|
82
84
|
end
|
|
83
85
|
|
|
84
86
|
def emque_env
|
|
85
|
-
config.env_var || ENV["EMQUE_ENV"] ||
|
|
87
|
+
config.env_var || ENV["EMQUE_ENV"] || "development"
|
|
86
88
|
end
|
|
87
89
|
end
|
|
88
90
|
end
|
|
@@ -23,7 +23,9 @@ module Emque
|
|
|
23
23
|
self.receivers = []
|
|
24
24
|
self.status = Emque::Consuming::Status.new
|
|
25
25
|
apply_options
|
|
26
|
-
Emque::Consuming
|
|
26
|
+
Emque::Consuming
|
|
27
|
+
.application
|
|
28
|
+
.initialize_logger(daemonized: options.fetch(:daemon) { false })
|
|
27
29
|
self.class.instance = self
|
|
28
30
|
self.pidfile = options.fetch(:pidfile, default_pidfile)
|
|
29
31
|
self.pid = Emque::Consuming::Pidfile.new(pidfile)
|
metadata
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: emque-consuming
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryan Williams
|
|
8
8
|
- Dan Matthews
|
|
9
|
-
|
|
9
|
+
- Paul Hanyzewski
|
|
10
|
+
autorequire:
|
|
10
11
|
bindir: bin
|
|
11
12
|
cert_chain: []
|
|
12
|
-
date:
|
|
13
|
+
date: 2021-06-30 00:00:00.000000000 Z
|
|
13
14
|
dependencies:
|
|
14
15
|
- !ruby/object:Gem::Dependency
|
|
15
16
|
name: celluloid
|
|
@@ -87,14 +88,14 @@ dependencies:
|
|
|
87
88
|
requirements:
|
|
88
89
|
- - "~>"
|
|
89
90
|
- !ruby/object:Gem::Version
|
|
90
|
-
version:
|
|
91
|
+
version: '1.0'
|
|
91
92
|
type: :runtime
|
|
92
93
|
prerelease: false
|
|
93
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
94
95
|
requirements:
|
|
95
96
|
- - "~>"
|
|
96
97
|
- !ruby/object:Gem::Version
|
|
97
|
-
version:
|
|
98
|
+
version: '1.0'
|
|
98
99
|
- !ruby/object:Gem::Dependency
|
|
99
100
|
name: inflecto
|
|
100
101
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -113,30 +114,30 @@ dependencies:
|
|
|
113
114
|
name: bundler
|
|
114
115
|
requirement: !ruby/object:Gem::Requirement
|
|
115
116
|
requirements:
|
|
116
|
-
- - "
|
|
117
|
+
- - ">="
|
|
117
118
|
- !ruby/object:Gem::Version
|
|
118
|
-
version:
|
|
119
|
+
version: 1.17.3
|
|
119
120
|
type: :development
|
|
120
121
|
prerelease: false
|
|
121
122
|
version_requirements: !ruby/object:Gem::Requirement
|
|
122
123
|
requirements:
|
|
123
|
-
- - "
|
|
124
|
+
- - ">="
|
|
124
125
|
- !ruby/object:Gem::Version
|
|
125
|
-
version:
|
|
126
|
+
version: 1.17.3
|
|
126
127
|
- !ruby/object:Gem::Dependency
|
|
127
128
|
name: rake
|
|
128
129
|
requirement: !ruby/object:Gem::Requirement
|
|
129
130
|
requirements:
|
|
130
|
-
- - "
|
|
131
|
+
- - ">="
|
|
131
132
|
- !ruby/object:Gem::Version
|
|
132
|
-
version:
|
|
133
|
+
version: 12.3.3
|
|
133
134
|
type: :development
|
|
134
135
|
prerelease: false
|
|
135
136
|
version_requirements: !ruby/object:Gem::Requirement
|
|
136
137
|
requirements:
|
|
137
|
-
- - "
|
|
138
|
+
- - ">="
|
|
138
139
|
- !ruby/object:Gem::Version
|
|
139
|
-
version:
|
|
140
|
+
version: 12.3.3
|
|
140
141
|
- !ruby/object:Gem::Dependency
|
|
141
142
|
name: rspec
|
|
142
143
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -193,7 +194,7 @@ dependencies:
|
|
|
193
194
|
- - "~>"
|
|
194
195
|
- !ruby/object:Gem::Version
|
|
195
196
|
version: 1.2.0
|
|
196
|
-
description:
|
|
197
|
+
description:
|
|
197
198
|
email:
|
|
198
199
|
- oss@teamsnap.com
|
|
199
200
|
executables:
|
|
@@ -201,8 +202,8 @@ executables:
|
|
|
201
202
|
extensions: []
|
|
202
203
|
extra_rdoc_files: []
|
|
203
204
|
files:
|
|
205
|
+
- ".github/workflows/ci.yml"
|
|
204
206
|
- ".gitignore"
|
|
205
|
-
- ".travis.yml"
|
|
206
207
|
- CHANGELOG.md
|
|
207
208
|
- Gemfile
|
|
208
209
|
- LICENSE.txt
|
|
@@ -274,7 +275,7 @@ homepage: https://github.com/teamsnap/emque-consuming
|
|
|
274
275
|
licenses:
|
|
275
276
|
- MIT
|
|
276
277
|
metadata: {}
|
|
277
|
-
post_install_message:
|
|
278
|
+
post_install_message:
|
|
278
279
|
rdoc_options: []
|
|
279
280
|
require_paths:
|
|
280
281
|
- lib
|
|
@@ -289,9 +290,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
289
290
|
- !ruby/object:Gem::Version
|
|
290
291
|
version: '0'
|
|
291
292
|
requirements: []
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
signing_key:
|
|
293
|
+
rubygems_version: 3.0.3.1
|
|
294
|
+
signing_key:
|
|
295
295
|
specification_version: 4
|
|
296
296
|
summary: Microservices framework for Ruby
|
|
297
297
|
test_files:
|