shoryuken 2.1.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +2 -0
  3. data/.rubocop.yml +8 -2
  4. data/.travis.yml +1 -0
  5. data/CHANGELOG.md +19 -0
  6. data/README.md +20 -104
  7. data/Rakefile +0 -1
  8. data/bin/cli/base.rb +42 -0
  9. data/bin/cli/sqs.rb +188 -0
  10. data/bin/shoryuken +47 -9
  11. data/examples/default_worker.rb +1 -1
  12. data/lib/shoryuken.rb +75 -55
  13. data/lib/shoryuken/client.rb +3 -15
  14. data/lib/shoryuken/default_worker_registry.rb +9 -5
  15. data/lib/shoryuken/environment_loader.rb +9 -40
  16. data/lib/shoryuken/fetcher.rb +16 -18
  17. data/lib/shoryuken/launcher.rb +5 -28
  18. data/lib/shoryuken/manager.rb +60 -140
  19. data/lib/shoryuken/message.rb +4 -13
  20. data/lib/shoryuken/middleware/chain.rb +1 -18
  21. data/lib/shoryuken/middleware/server/auto_extend_visibility.rb +7 -16
  22. data/lib/shoryuken/middleware/server/exponential_backoff_retry.rb +25 -21
  23. data/lib/shoryuken/polling.rb +2 -4
  24. data/lib/shoryuken/processor.rb +2 -11
  25. data/lib/shoryuken/queue.rb +1 -3
  26. data/lib/shoryuken/runner.rb +143 -0
  27. data/lib/shoryuken/util.rb +0 -8
  28. data/lib/shoryuken/version.rb +1 -1
  29. data/lib/shoryuken/worker.rb +1 -1
  30. data/shoryuken.gemspec +6 -5
  31. data/spec/integration/launcher_spec.rb +4 -3
  32. data/spec/shoryuken/client_spec.rb +2 -45
  33. data/spec/shoryuken/default_worker_registry_spec.rb +12 -10
  34. data/spec/shoryuken/environment_loader_spec.rb +34 -0
  35. data/spec/shoryuken/manager_spec.rb +11 -21
  36. data/spec/shoryuken/middleware/chain_spec.rb +0 -24
  37. data/spec/shoryuken/middleware/server/auto_extend_visibility_spec.rb +0 -2
  38. data/spec/shoryuken/middleware/server/exponential_backoff_retry_spec.rb +46 -29
  39. data/spec/shoryuken/processor_spec.rb +5 -5
  40. data/spec/shoryuken/{cli_spec.rb → runner_spec.rb} +8 -22
  41. data/spec/shoryuken_spec.rb +13 -1
  42. data/spec/spec_helper.rb +3 -8
  43. metadata +29 -22
  44. data/lib/shoryuken/aws_config.rb +0 -64
  45. data/lib/shoryuken/cli.rb +0 -215
  46. data/lib/shoryuken/sns_arn.rb +0 -27
  47. data/lib/shoryuken/topic.rb +0 -17
  48. data/spec/shoryuken/sns_arn_spec.rb +0 -42
  49. data/spec/shoryuken/topic_spec.rb +0 -32
  50. data/spec/shoryuken_endpoint.yml +0 -6
@@ -44,28 +44,4 @@ describe Shoryuken::Middleware::Chain do
44
44
  expect(final_action).to eq nil
45
45
  expect(recorder).to eq []
46
46
  end
47
-
48
- class DeprecatedMiddleware
49
- def call(worker_instance, queue, sqs_msg)
50
- @@success = true
51
- end
52
-
53
- def self.success?
54
- !!@@success
55
- end
56
- end
57
-
58
- it 'patches deprecated middleware' do
59
- subject.clear
60
-
61
- expect(Shoryuken.logger).to receive(:warn) do |&block|
62
- expect(block.call).to eq('[DEPRECATION] DeprecatedMiddleware#call(worker_instance, queue, sqs_msg) is deprecated. Please use DeprecatedMiddleware#call(worker_instance, queue, sqs_msg, body)')
63
- end
64
-
65
- subject.add DeprecatedMiddleware
66
-
67
- subject.invoke TestWorker, 'test', double('SQS msg', body: 'test'), 'test'
68
-
69
- expect(DeprecatedMiddleware.success?).to eq true
70
- end
71
47
  end
@@ -12,8 +12,6 @@ RSpec.describe Shoryuken::Middleware::Server::AutoExtendVisibility do
12
12
 
13
13
  # We need to run our worker inside actor context.
14
14
  class Runner
15
- include Celluloid
16
-
17
15
  def run_and_sleep(worker, queue, sqs_msg, interval)
18
16
  Shoryuken::Middleware::Server::AutoExtendVisibility.new.call(worker, queue, sqs_msg, sqs_msg.body) do
19
17
  sleep interval
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
+ # rubocop:disable Metrics/BlockLength, Metrics/BlockDelimiters
3
4
  RSpec.describe Shoryuken::Middleware::Server::ExponentialBackoffRetry do
4
5
  let(:queue) { 'default' }
5
6
  let(:sqs_queue) { double Shoryuken::Queue }
@@ -16,8 +17,8 @@ RSpec.describe Shoryuken::Middleware::Server::ExponentialBackoffRetry do
16
17
  end
17
18
  end
18
19
 
19
- context 'when a job succeeds' do
20
- it 'does not retry the job' do
20
+ context 'when no exception' do
21
+ it 'does not retry' do
21
22
  TestWorker.get_shoryuken_options['retry_intervals'] = [300, 1800]
22
23
 
23
24
  expect(sqs_msg).not_to receive(:change_visibility)
@@ -26,60 +27,76 @@ RSpec.describe Shoryuken::Middleware::Server::ExponentialBackoffRetry do
26
27
  end
27
28
  end
28
29
 
29
- context 'when a job throws an exception' do
30
+ context 'when an error' do
31
+ context "and retry_intervals isn't set" do
32
+ it 'does not retry' do
33
+ expect(sqs_msg).not_to receive(:change_visibility)
30
34
 
31
- it 'does not retry the job by default' do
32
- expect(sqs_msg).not_to receive(:change_visibility)
35
+ expect {
36
+ subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'Error' }
37
+ }.to raise_error(RuntimeError, 'Error')
38
+ end
39
+ end
40
+
41
+ context 'and retry_intervals is a lambda' do
42
+ it 'retries' do
43
+ TestWorker.get_shoryuken_options['retry_intervals'] = ->(_attempts) { 500 }
44
+
45
+ allow(sqs_msg).to receive(:queue) { sqs_queue }
46
+ expect(sqs_msg).to receive(:change_visibility).with(visibility_timeout: 500)
33
47
 
34
- expect {
35
- subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'Error' }
36
- }.to raise_error(RuntimeError, 'Error')
48
+ expect { subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'failed' } }.not_to raise_error
49
+ end
37
50
  end
38
51
 
39
- it 'does not retry the job if :retry_intervals is empty' do
40
- TestWorker.get_shoryuken_options['retry_intervals'] = []
52
+ context 'and retry_intervals is empty' do
53
+ it 'does not retry' do
54
+ TestWorker.get_shoryuken_options['retry_intervals'] = []
41
55
 
42
- expect(sqs_msg).not_to receive(:change_visibility)
56
+ expect(sqs_msg).not_to receive(:change_visibility)
43
57
 
44
- expect {
45
- subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'Error' }
46
- }.to raise_error(RuntimeError, 'Error')
58
+ expect {
59
+ subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'Error' }
60
+ }.to raise_error(RuntimeError, 'Error')
61
+ end
47
62
  end
48
63
 
49
- it 'retries the job if :retry_intervals is non-empty' do
64
+ it 'uses first interval ' do
50
65
  TestWorker.get_shoryuken_options['retry_intervals'] = [300, 1800]
51
66
 
52
- allow(sqs_msg).to receive(:queue){ sqs_queue }
67
+ allow(sqs_msg).to receive(:queue) { sqs_queue }
53
68
  expect(sqs_msg).to receive(:change_visibility).with(visibility_timeout: 300)
54
69
 
55
70
  expect { subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'failed' } }.not_to raise_error
56
71
  end
57
72
 
58
- it 'retries the job with exponential backoff' do
73
+ it 'uses matching interval' do
59
74
  TestWorker.get_shoryuken_options['retry_intervals'] = [300, 1800]
60
75
 
61
- allow(sqs_msg).to receive(:attributes){ {'ApproximateReceiveCount' => 2 } }
62
- allow(sqs_msg).to receive(:queue){ sqs_queue }
76
+ allow(sqs_msg).to receive(:attributes) { { 'ApproximateReceiveCount' => 2 } }
77
+ allow(sqs_msg).to receive(:queue) { sqs_queue }
63
78
  expect(sqs_msg).to receive(:change_visibility).with(visibility_timeout: 1800)
64
79
 
65
80
  expect { subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'failed' } }.not_to raise_error
66
81
  end
67
82
 
68
- it 'uses the last retry interval when :receive_count exceeds the size of :retry_intervals' do
69
- TestWorker.get_shoryuken_options['retry_intervals'] = [300, 1800]
83
+ context 'when attempts exceeds retry_intervals' do
84
+ it 'uses last interval' do
85
+ TestWorker.get_shoryuken_options['retry_intervals'] = [300, 1800]
70
86
 
71
- allow(sqs_msg).to receive(:attributes){ {'ApproximateReceiveCount' => 3 } }
72
- allow(sqs_msg).to receive(:queue){ sqs_queue }
73
- expect(sqs_msg).to receive(:change_visibility).with(visibility_timeout: 1800)
87
+ allow(sqs_msg).to receive(:attributes) { { 'ApproximateReceiveCount' => 3 } }
88
+ allow(sqs_msg).to receive(:queue) { sqs_queue }
89
+ expect(sqs_msg).to receive(:change_visibility).with(visibility_timeout: 1800)
74
90
 
75
- expect { subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'failed' } }.not_to raise_error
91
+ expect { subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'failed' } }.not_to raise_error
92
+ end
76
93
  end
77
94
 
78
- it 'limits the visibility timeout to 12 hours from receipt of message' do
79
- TestWorker.get_shoryuken_options['retry_intervals'] = [86400]
95
+ it 'limits the visibility timeout to 12 hours' do
96
+ TestWorker.get_shoryuken_options['retry_intervals'] = [86_400]
80
97
 
81
- allow(sqs_msg).to receive(:queue){ sqs_queue }
82
- expect(sqs_msg).to receive(:change_visibility).with(visibility_timeout: 43198)
98
+ allow(sqs_msg).to receive(:queue) { sqs_queue }
99
+ expect(sqs_msg).to receive(:change_visibility).with(visibility_timeout: 43_198)
83
100
 
84
101
  expect { subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise 'failed' } }.not_to raise_error
85
102
  end
@@ -169,7 +169,7 @@ RSpec.describe Shoryuken::Processor do
169
169
  end
170
170
 
171
171
  it 'invokes middleware' do
172
- expect(manager).to receive(:processor_done).with(queue, subject)
172
+ expect(manager).to receive(:processor_done).with(queue)
173
173
 
174
174
  expect_any_instance_of(WorkerCalledMiddlewareWorker).to receive(:perform).with(sqs_msg, sqs_msg.body)
175
175
  expect_any_instance_of(WorkerCalledMiddlewareWorker).to receive(:called).with(sqs_msg, queue)
@@ -199,7 +199,7 @@ RSpec.describe Shoryuken::Processor do
199
199
  end
200
200
 
201
201
  it "doesn't invoke middleware" do
202
- expect(manager).to receive(:processor_done).with(queue, subject)
202
+ expect(manager).to receive(:processor_done).with(queue)
203
203
 
204
204
  expect_any_instance_of(WorkerCalledMiddlewareWorker).to receive(:perform).with(sqs_msg, sqs_msg.body)
205
205
  expect_any_instance_of(WorkerCalledMiddlewareWorker).to_not receive(:called).with(sqs_msg, queue)
@@ -212,7 +212,7 @@ RSpec.describe Shoryuken::Processor do
212
212
  it 'performs with delete' do
213
213
  TestWorker.get_shoryuken_options['auto_delete'] = true
214
214
 
215
- expect(manager).to receive(:processor_done).with(queue, subject)
215
+ expect(manager).to receive(:processor_done).with(queue)
216
216
 
217
217
  expect_any_instance_of(TestWorker).to receive(:perform).with(sqs_msg, sqs_msg.body)
218
218
 
@@ -224,7 +224,7 @@ RSpec.describe Shoryuken::Processor do
224
224
  it 'performs without delete' do
225
225
  TestWorker.get_shoryuken_options['auto_delete'] = false
226
226
 
227
- expect(manager).to receive(:processor_done).with(queue, subject)
227
+ expect(manager).to receive(:processor_done).with(queue)
228
228
 
229
229
  expect_any_instance_of(TestWorker).to receive(:perform).with(sqs_msg, sqs_msg.body)
230
230
 
@@ -249,7 +249,7 @@ RSpec.describe Shoryuken::Processor do
249
249
  it 'performs without delete' do
250
250
  Shoryuken.worker_registry.clear # unregister TestWorker
251
251
 
252
- expect(manager).to receive(:processor_done).with(queue, subject)
252
+ expect(manager).to receive(:processor_done).with(queue)
253
253
 
254
254
  expect_any_instance_of(TestWorker).to receive(:perform).with(sqs_msg, sqs_msg.body)
255
255
 
@@ -1,9 +1,10 @@
1
1
  require 'spec_helper'
2
- require 'shoryuken/cli'
2
+ require 'shoryuken/runner'
3
3
  require 'shoryuken/launcher'
4
4
 
5
- RSpec.describe Shoryuken::CLI do
6
- let(:cli) { Shoryuken::CLI.instance }
5
+ # rubocop:disable Metrics/BlockLength
6
+ RSpec.describe Shoryuken::Runner do
7
+ let(:cli) { Shoryuken::Runner.instance }
7
8
 
8
9
  before do
9
10
  # make sure we do not bail
@@ -23,43 +24,28 @@ RSpec.describe Shoryuken::CLI do
23
24
  end
24
25
 
25
26
  it 'does not raise' do
26
- expect { cli.run([]) }.to_not raise_error
27
+ expect { cli.run({}) }.to_not raise_error
27
28
  end
28
29
 
29
30
  it 'daemonizes with --daemon --logfile' do
30
- expect(cli).to receive(:celluloid_loaded?).and_return(false)
31
31
  expect(Process).to receive(:daemon)
32
- cli.run(['--daemon', '--logfile', '/dev/null'])
32
+ cli.run(daemon: true, logfile: '/dev/null')
33
33
  end
34
34
 
35
35
  it 'does NOT daemonize with --logfile' do
36
36
  expect(Process).to_not receive(:daemon)
37
- cli.run(['--logfile', '/dev/null'])
37
+ cli.run(logfile: '/dev/null')
38
38
  end
39
39
 
40
40
  it 'writes PID file with --pidfile' do
41
41
  pidfile = instance_double('File')
42
42
  expect(File).to receive(:open).with('/dev/null', 'w').and_yield(pidfile)
43
43
  expect(pidfile).to receive(:puts).with(Process.pid)
44
- cli.run(['--pidfile', '/dev/null'])
44
+ cli.run(pidfile: '/dev/null')
45
45
  end
46
46
  end
47
47
 
48
48
  describe '#daemonize' do
49
- before(:each) do
50
- allow(cli).to receive(:celluloid_loaded?).and_return(false)
51
- end
52
-
53
- it 'raises if logfile is not set' do
54
- expect { cli.send(:daemonize, daemon: true) }.to raise_error(ArgumentError)
55
- end
56
-
57
- it 'raises if Celluloid is already loaded' do
58
- expect(cli).to receive(:celluloid_loaded?).and_return(true)
59
- args = { daemon: true, logfile: '/dev/null' }
60
- expect { cli.send(:daemonize, args) }.to raise_error(RuntimeError)
61
- end
62
-
63
49
  it 'calls Process.daemon' do
64
50
  args = { daemon: true, logfile: '/dev/null' }
65
51
  expect(Process).to receive(:daemon).with(true, true)
@@ -1,6 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Shoryuken do
3
+ RSpec.describe Shoryuken do
4
+ describe '.add_queue' do
5
+ after { Shoryuken.queues.clear }
6
+
7
+ it 'adds queues' do
8
+ described_class.add_queue('default')
9
+ expect(described_class.queues).to eq(['default'])
10
+
11
+ described_class.add_queue('high', 2)
12
+ expect(described_class.queues).to eq(%w(default high high))
13
+ end
14
+ end
15
+
4
16
  describe '.register_worker' do
5
17
  it 'registers a worker' do
6
18
  described_class.worker_registry.clear
data/spec/spec_helper.rb CHANGED
@@ -2,7 +2,6 @@ require 'bundler/setup'
2
2
  Bundler.setup
3
3
 
4
4
  require 'pry-byebug'
5
- require 'celluloid/current'
6
5
  require 'shoryuken'
7
6
  require 'json'
8
7
  require 'dotenv'
@@ -18,7 +17,6 @@ config_file = File.join(File.expand_path('../..', __FILE__), 'spec', 'shoryuken.
18
17
  Shoryuken::EnvironmentLoader.setup_options(config_file: config_file)
19
18
 
20
19
  Shoryuken.logger.level = Logger::UNKNOWN
21
- Celluloid.logger.level = Logger::UNKNOWN
22
20
 
23
21
  class TestWorker
24
22
  include Shoryuken::Worker
@@ -30,17 +28,15 @@ end
30
28
 
31
29
  RSpec.configure do |config|
32
30
  # Only run slow tests if SPEC_ALL=true and AWS_ACCESS_KEY_ID is present
33
- # The AWS_ACCESS_KEY_ID checker is because Travis CI does not expose ENV variables to pull requests from forked repositories
31
+ # The AWS_ACCESS_KEY_ID checker is because Travis CI
32
+ # does not expose ENV variables to pull requests from forked repositories
34
33
  # http://docs.travis-ci.com/user/pull-requests/
35
34
  config.filter_run_excluding slow: true if ENV['SPEC_ALL'] != 'true' || ENV['AWS_ACCESS_KEY_ID'].nil?
36
35
 
37
36
  config.before do
38
37
  Shoryuken::Client.class_variable_set :@@queues, {}
39
- Shoryuken::Client.class_variable_set :@@visibility_timeouts, {}
40
38
 
41
39
  Shoryuken::Client.sqs = nil
42
- Shoryuken::Client.sqs_resource = nil
43
- Shoryuken::Client.sns = nil
44
40
 
45
41
  Shoryuken.queues.clear
46
42
 
@@ -49,8 +45,7 @@ RSpec.configure do |config|
49
45
  Shoryuken.options[:timeout] = 1
50
46
  Shoryuken.options[:daemon] = nil
51
47
  Shoryuken.options[:logfile] = nil
52
-
53
- Shoryuken.options[:aws].delete(:receive_message)
48
+ Shoryuken.options[:queues] = nil
54
49
 
55
50
  TestWorker.get_shoryuken_options.clear
56
51
  TestWorker.get_shoryuken_options['queue'] = 'default'
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoryuken
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Cantero
8
- - Mario Kostelac
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2017-01-27 00:00:00.000000000 Z
11
+ date: 2017-03-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
@@ -96,23 +95,36 @@ dependencies:
96
95
  - !ruby/object:Gem::Version
97
96
  version: '2'
98
97
  - !ruby/object:Gem::Dependency
99
- name: celluloid
98
+ name: concurrent-ruby
100
99
  requirement: !ruby/object:Gem::Requirement
101
100
  requirements:
102
- - - "~>"
101
+ - - ">="
103
102
  - !ruby/object:Gem::Version
104
- version: '0.17'
103
+ version: '0'
105
104
  type: :runtime
106
105
  prerelease: false
107
106
  version_requirements: !ruby/object:Gem::Requirement
108
107
  requirements:
109
- - - "~>"
108
+ - - ">="
110
109
  - !ruby/object:Gem::Version
111
- version: '0.17'
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: thor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
112
125
  description: Shoryuken is a super efficient AWS SQS thread based message processor
113
126
  email:
114
127
  - pablo@pablocantero.com
115
- - mariokostelac@gmail.com
116
128
  executables:
117
129
  - shoryuken
118
130
  extensions: []
@@ -128,12 +140,12 @@ files:
128
140
  - LICENSE
129
141
  - README.md
130
142
  - Rakefile
143
+ - bin/cli/base.rb
144
+ - bin/cli/sqs.rb
131
145
  - bin/shoryuken
132
146
  - examples/bootstrap_queues.rb
133
147
  - examples/default_worker.rb
134
148
  - lib/shoryuken.rb
135
- - lib/shoryuken/aws_config.rb
136
- - lib/shoryuken/cli.rb
137
149
  - lib/shoryuken/client.rb
138
150
  - lib/shoryuken/core_ext.rb
139
151
  - lib/shoryuken/default_worker_registry.rb
@@ -153,8 +165,7 @@ files:
153
165
  - lib/shoryuken/polling.rb
154
166
  - lib/shoryuken/processor.rb
155
167
  - lib/shoryuken/queue.rb
156
- - lib/shoryuken/sns_arn.rb
157
- - lib/shoryuken/topic.rb
168
+ - lib/shoryuken/runner.rb
158
169
  - lib/shoryuken/util.rb
159
170
  - lib/shoryuken/version.rb
160
171
  - lib/shoryuken/worker.rb
@@ -163,10 +174,10 @@ files:
163
174
  - shoryuken.jpg
164
175
  - spec/integration/launcher_spec.rb
165
176
  - spec/shoryuken.yml
166
- - spec/shoryuken/cli_spec.rb
167
177
  - spec/shoryuken/client_spec.rb
168
178
  - spec/shoryuken/core_ext_spec.rb
169
179
  - spec/shoryuken/default_worker_registry_spec.rb
180
+ - spec/shoryuken/environment_loader_spec.rb
170
181
  - spec/shoryuken/fetcher_spec.rb
171
182
  - spec/shoryuken/manager_spec.rb
172
183
  - spec/shoryuken/middleware/chain_spec.rb
@@ -177,11 +188,9 @@ files:
177
188
  - spec/shoryuken/polling_spec.rb
178
189
  - spec/shoryuken/processor_spec.rb
179
190
  - spec/shoryuken/queue_spec.rb
180
- - spec/shoryuken/sns_arn_spec.rb
181
- - spec/shoryuken/topic_spec.rb
191
+ - spec/shoryuken/runner_spec.rb
182
192
  - spec/shoryuken/util_spec.rb
183
193
  - spec/shoryuken/worker_spec.rb
184
- - spec/shoryuken_endpoint.yml
185
194
  - spec/shoryuken_spec.rb
186
195
  - spec/spec_helper.rb
187
196
  - test_workers/endless_interruptive_worker.rb
@@ -206,17 +215,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
215
  version: '0'
207
216
  requirements: []
208
217
  rubyforge_project:
209
- rubygems_version: 2.5.1
218
+ rubygems_version: 2.5.2
210
219
  signing_key:
211
220
  specification_version: 4
212
221
  summary: Shoryuken is a super efficient AWS SQS thread based message processor
213
222
  test_files:
214
223
  - spec/integration/launcher_spec.rb
215
224
  - spec/shoryuken.yml
216
- - spec/shoryuken/cli_spec.rb
217
225
  - spec/shoryuken/client_spec.rb
218
226
  - spec/shoryuken/core_ext_spec.rb
219
227
  - spec/shoryuken/default_worker_registry_spec.rb
228
+ - spec/shoryuken/environment_loader_spec.rb
220
229
  - spec/shoryuken/fetcher_spec.rb
221
230
  - spec/shoryuken/manager_spec.rb
222
231
  - spec/shoryuken/middleware/chain_spec.rb
@@ -227,10 +236,8 @@ test_files:
227
236
  - spec/shoryuken/polling_spec.rb
228
237
  - spec/shoryuken/processor_spec.rb
229
238
  - spec/shoryuken/queue_spec.rb
230
- - spec/shoryuken/sns_arn_spec.rb
231
- - spec/shoryuken/topic_spec.rb
239
+ - spec/shoryuken/runner_spec.rb
232
240
  - spec/shoryuken/util_spec.rb
233
241
  - spec/shoryuken/worker_spec.rb
234
- - spec/shoryuken_endpoint.yml
235
242
  - spec/shoryuken_spec.rb
236
243
  - spec/spec_helper.rb