shoryuken 3.1.2 → 3.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53d21819575a7b12f3697e5c06b390519f164baa
4
- data.tar.gz: 967d57ff341f98b950661ca8d249b90a044ca08a
3
+ metadata.gz: 942ccdeaca0a94e766b82fa40da9ed091b703ea2
4
+ data.tar.gz: f94a089b56ed37b5db2752ccf418c667fae31b6d
5
5
  SHA512:
6
- metadata.gz: a00ede2ec62aa8be31528aed16634bd1e99f04d5be4345b36fd1fa0c9baf01131a45ad6559c87a5f37432c95ca21a8a0d00060b85c9c60b94d4a7c3e01e0f651
7
- data.tar.gz: 1fe49809c4a90e468a945979aebb1407f55d32a681788e882c82d08482dd768c571fe8e229dc3677ae6aeece348477fbd944ff7d04f80bdae7f8e258a35a6de3
6
+ metadata.gz: 67c92d3af6c4063f42afe07a3f56c32b847bd1bc76d80f4f9f46cc2aa48d3e7bf82213f4d98fe229265ce9b1387a3649652863f019e73aeb0d809b1a03c5ca4d
7
+ data.tar.gz: 1215eca9e669975edb70fa43855122e6f25c6e54452771ba26435f7e8df37684be20516037e1419a3e7d93a14773231387f471cc2ff8a03eb838f1e52f2c144d
@@ -1,3 +1,11 @@
1
+ ## [v3.1.3] - 2017-07-11
2
+
3
+ - Add queue prefixing support for groups
4
+ - [#405](https://github.com/phstc/shoryuken/pull/405)
5
+
6
+ - Remove dead code
7
+ - [#402](https://github.com/phstc/shoryuken/pull/402)
8
+
1
9
  ## [v3.1.2] - 2017-07-06
2
10
 
3
11
  - Fix stack level too deep on Ubuntu
data/Gemfile CHANGED
@@ -4,6 +4,7 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :test do
7
+ gem 'activejob'
7
8
  gem 'codeclimate-test-reporter', require: nil
8
9
  gem 'simplecov'
9
10
  gem 'multi_xml'
@@ -34,6 +34,7 @@ module Shoryuken
34
34
 
35
35
  def_delegators(
36
36
  :'Shoryuken::Options',
37
+ :active_job?,
37
38
  :add_group,
38
39
  :groups,
39
40
  :add_queue,
@@ -67,4 +68,4 @@ module Shoryuken
67
68
  )
68
69
  end
69
70
 
70
- require 'shoryuken/extensions/active_job_adapter' if defined?(::ActiveJob)
71
+ require 'shoryuken/extensions/active_job_adapter' if Shoryuken.active_job?
@@ -44,7 +44,7 @@ module Shoryuken
44
44
 
45
45
  fail ArgumentError, "The supplied config file #{path} does not exist" unless File.exist?(path)
46
46
 
47
- if result = YAML.load(ERB.new(IO.read(path)).result)
47
+ if (result = YAML.load(ERB.new(IO.read(path)).result))
48
48
  result.deep_symbolize_keys
49
49
  else
50
50
  {}
@@ -69,7 +69,7 @@ module Shoryuken
69
69
  ::Rails::Application.initializer 'shoryuken.eager_load' do
70
70
  ::Rails.application.config.eager_load = true
71
71
  end
72
- require 'shoryuken/extensions/active_job_adapter' if defined?(::ActiveJob)
72
+ require 'shoryuken/extensions/active_job_adapter' if Shoryuken.active_job?
73
73
  require File.expand_path('config/environment.rb')
74
74
  end
75
75
  end
@@ -85,22 +85,36 @@ module Shoryuken
85
85
  end
86
86
  end
87
87
 
88
- def prefix_active_job_queue_names
89
- return unless defined? ::ActiveJob
90
- return unless Shoryuken.active_job_queue_name_prefixing
91
-
88
+ def prefix_active_job_queue_name(queue_name, weight)
92
89
  queue_name_prefix = ::ActiveJob::Base.queue_name_prefix
93
90
  queue_name_delimiter = ::ActiveJob::Base.queue_name_delimiter
94
91
 
95
92
  # See https://github.com/rails/rails/blob/master/activejob/lib/active_job/queue_name.rb#L27
93
+ name_parts = [queue_name_prefix.presence, queue_name]
94
+ prefixed_queue_name = name_parts.compact.join(queue_name_delimiter)
95
+ [prefixed_queue_name, weight]
96
+ end
97
+
98
+ def prefix_active_job_queue_names
99
+ return unless Shoryuken.active_job?
100
+ return unless Shoryuken.active_job_queue_name_prefixing
101
+
96
102
  Shoryuken.options[:queues].to_a.map! do |queue_name, weight|
97
- name_parts = [queue_name_prefix.presence, queue_name]
98
- prefixed_queue_name = name_parts.compact.join(queue_name_delimiter)
99
- [prefixed_queue_name, weight]
103
+ prefix_active_job_queue_name(queue_name, weight)
104
+ end
105
+
106
+ Shoryuken.options[:groups].to_a.map! do |group, options|
107
+ if options[:queues]
108
+ options[:queues].map! do |queue_name, weight|
109
+ prefix_active_job_queue_name(queue_name, weight)
110
+ end
111
+ end
112
+
113
+ [group, options]
100
114
  end
101
115
  end
102
116
 
103
- def parse_queue(queue, weight = nil, group)
117
+ def parse_queue(queue, weight, group)
104
118
  Shoryuken.add_queue(queue, [weight.to_i, 1].max, group)
105
119
  end
106
120
 
@@ -155,7 +169,7 @@ module Shoryuken
155
169
  end
156
170
 
157
171
  def validate_workers
158
- return if defined?(::ActiveJob)
172
+ return if Shoryuken.active_job?
159
173
 
160
174
  all_queues = Shoryuken.ungrouped_queues
161
175
  queues_with_workers = Shoryuken.worker_registry.queues
@@ -3,7 +3,6 @@ require 'logger'
3
3
 
4
4
  module Shoryuken
5
5
  module Logging
6
-
7
6
  class Pretty < Logger::Formatter
8
7
  # Provide a call() method that returns the formatted message.
9
8
  def call(severity, time, program_name, message)
@@ -37,9 +36,5 @@ module Shoryuken
37
36
  def self.logger=(log)
38
37
  @logger = (log ? log : Logger.new('/dev/null'))
39
38
  end
40
-
41
- def logger
42
- shoryuken::Logging.logger
43
- end
44
39
  end
45
40
  end
@@ -23,6 +23,10 @@ module Shoryuken
23
23
  @@stop_callback = nil
24
24
 
25
25
  class << self
26
+ def active_job?
27
+ defined?(::ActiveJob)
28
+ end
29
+
26
30
  def add_group(group, concurrency)
27
31
  groups[group] ||= {
28
32
  concurrency: concurrency,
@@ -30,7 +30,7 @@ module Shoryuken
30
30
  end
31
31
 
32
32
  def worker_name(worker_class, sqs_msg, body = nil)
33
- if defined?(::ActiveJob) \
33
+ if Shoryuken.active_job? \
34
34
  && !sqs_msg.is_a?(Array) \
35
35
  && sqs_msg.message_attributes \
36
36
  && sqs_msg.message_attributes['shoryuken_class'] \
@@ -1,3 +1,3 @@
1
1
  module Shoryuken
2
- VERSION = '3.1.2'.freeze
2
+ VERSION = '3.1.3'.freeze
3
3
  end
@@ -1,13 +1,12 @@
1
1
  require 'spec_helper'
2
+ require 'active_job'
2
3
 
3
- # rubocop:disable Metrics/BlockLength
4
4
  RSpec.describe Shoryuken::EnvironmentLoader do
5
5
  subject { described_class.new({}) }
6
6
 
7
7
  describe '#parse_queues' do
8
8
  before do
9
- # TODO proper test other methods
10
- allow(subject).to receive(:load_rails).with(anything)
9
+ allow(subject).to receive(:load_rails)
11
10
  allow(subject).to receive(:prefix_active_job_queue_names)
12
11
  allow(subject).to receive(:require_workers)
13
12
  allow(subject).to receive(:validate_queues)
@@ -22,4 +21,34 @@ RSpec.describe Shoryuken::EnvironmentLoader do
22
21
  expect(Shoryuken.groups['default'][:queues]).to eq(%w(queue1 queue2 queue2))
23
22
  end
24
23
  end
24
+
25
+ describe '#prefix_active_job_queue_names' do
26
+ before do
27
+ allow(subject).to receive(:load_rails)
28
+ allow(subject).to receive(:require_workers)
29
+ allow(subject).to receive(:validate_queues)
30
+ allow(subject).to receive(:validate_workers)
31
+ allow(subject).to receive(:patch_deprecated_workers)
32
+
33
+ ActiveJob::Base.queue_name_prefix = 'test'
34
+ ActiveJob::Base.queue_name_delimiter = '_'
35
+
36
+ allow(Shoryuken).to receive(:active_job?).and_return(true)
37
+ end
38
+
39
+ specify do
40
+ Shoryuken.active_job_queue_name_prefixing = true
41
+
42
+ Shoryuken.options[:queues] = ['queue1', ['queue2', 2]]
43
+
44
+ Shoryuken.options[:groups] = {
45
+ 'group1' => { queues: %w(group1_queue1 group1_queue2) }
46
+ }
47
+
48
+ subject.load
49
+
50
+ expect(Shoryuken.groups['default'][:queues]).to eq(%w(test_queue1 test_queue2 test_queue2))
51
+ expect(Shoryuken.groups['group1'][:queues]).to eq(%w(test_group1_queue1 test_group1_queue2))
52
+ end
53
+ end
25
54
  end
@@ -1,14 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Shoryuken::Middleware::Server::Timing do
3
+ RSpec.describe Shoryuken::Middleware::Server::Timing do
4
4
  let(:queue) { 'default' }
5
5
  let(:sqs_queue) { double Shoryuken::Queue, visibility_timeout: 60 }
6
6
 
7
7
  let(:sqs_msg) do
8
- double Shoryuken::Message,
8
+ double(
9
+ Shoryuken::Message,
9
10
  queue_url: queue,
10
11
  body: 'test',
11
12
  message_id: 'fc754df7-9cc2-4c41-96ca-5996a44b771e'
13
+ )
12
14
  end
13
15
 
14
16
  before do
@@ -28,7 +30,7 @@ describe Shoryuken::Middleware::Server::Timing do
28
30
 
29
31
  context 'when exceeded the `visibility_timeout`' do
30
32
  it 'logs exceeded' do
31
- allow(subject).to receive(:elapsed).and_return(120000)
33
+ allow(subject).to receive(:elapsed).and_return(120_000)
32
34
 
33
35
  expect(Shoryuken.logger).to receive(:info) do |&block|
34
36
  expect(block.call).to match(/started at/)
@@ -52,11 +52,14 @@ RSpec.configure do |config|
52
52
  TestWorker.get_shoryuken_options.clear
53
53
  TestWorker.get_shoryuken_options['queue'] = 'default'
54
54
 
55
+ Shoryuken.active_job_queue_name_prefixing = false
56
+
55
57
  Shoryuken.worker_registry.clear
56
58
  Shoryuken.register_worker('default', TestWorker)
57
59
 
58
60
  Aws.config[:stub_responses] = true
59
61
 
60
62
  allow(Concurrent).to receive(:global_io_executor).and_return(Concurrent::ImmediateExecutor.new)
63
+ allow(Shoryuken).to receive(:active_job?).and_return(false)
61
64
  end
62
65
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoryuken
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.2
4
+ version: 3.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Cantero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-06 00:00:00.000000000 Z
11
+ date: 2017-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler