shoryuken 2.1.3 → 3.0.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.
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