shoryuken 7.0.0.alpha1 → 7.0.0.alpha2
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/.github/workflows/push.yml +3 -3
- data/.github/workflows/specs.yml +6 -9
- data/.github/workflows/verify-action-pins.yml +1 -1
- data/.rspec +2 -1
- data/.ruby-version +1 -1
- data/Appraisals +0 -6
- data/CHANGELOG.md +186 -142
- data/Gemfile +1 -0
- data/README.md +12 -13
- data/bin/cli/base.rb +1 -2
- data/bin/cli/sqs.rb +5 -4
- data/bin/shoryuken +2 -1
- data/gemfiles/rails_7_0.gemfile +10 -10
- data/gemfiles/rails_7_1.gemfile +10 -9
- data/gemfiles/rails_7_2.gemfile +10 -9
- data/gemfiles/rails_8_0.gemfile +10 -9
- data/lib/shoryuken/body_parser.rb +3 -1
- data/lib/shoryuken/client.rb +2 -0
- data/lib/shoryuken/default_exception_handler.rb +2 -0
- data/lib/shoryuken/default_worker_registry.rb +11 -11
- data/lib/shoryuken/environment_loader.rb +6 -6
- data/lib/shoryuken/extensions/active_job_adapter.rb +8 -6
- data/lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb +5 -5
- data/lib/shoryuken/extensions/active_job_extensions.rb +2 -0
- data/lib/shoryuken/fetcher.rb +4 -2
- data/lib/shoryuken/helpers/atomic_boolean.rb +44 -0
- data/lib/shoryuken/helpers/atomic_counter.rb +104 -0
- data/lib/shoryuken/helpers/atomic_hash.rb +182 -0
- data/lib/shoryuken/helpers/hash_utils.rb +56 -0
- data/lib/shoryuken/helpers/string_utils.rb +65 -0
- data/lib/shoryuken/inline_message.rb +22 -0
- data/lib/shoryuken/launcher.rb +2 -0
- data/lib/shoryuken/logging.rb +19 -5
- data/lib/shoryuken/manager.rb +6 -4
- data/lib/shoryuken/message.rb +2 -0
- data/lib/shoryuken/middleware/chain.rb +2 -0
- data/lib/shoryuken/middleware/server/active_record.rb +2 -0
- data/lib/shoryuken/middleware/server/auto_delete.rb +2 -0
- data/lib/shoryuken/middleware/server/auto_extend_visibility.rb +10 -10
- data/lib/shoryuken/middleware/server/exponential_backoff_retry.rb +5 -3
- data/lib/shoryuken/middleware/server/timing.rb +2 -0
- data/lib/shoryuken/options.rb +9 -5
- data/lib/shoryuken/polling/base_strategy.rb +126 -0
- data/lib/shoryuken/polling/queue_configuration.rb +103 -0
- data/lib/shoryuken/polling/strict_priority.rb +2 -0
- data/lib/shoryuken/polling/weighted_round_robin.rb +2 -0
- data/lib/shoryuken/processor.rb +5 -2
- data/lib/shoryuken/queue.rb +6 -4
- data/lib/shoryuken/runner.rb +9 -12
- data/lib/shoryuken/util.rb +6 -6
- data/lib/shoryuken/version.rb +3 -1
- data/lib/shoryuken/worker/default_executor.rb +2 -0
- data/lib/shoryuken/worker/inline_executor.rb +3 -1
- data/lib/shoryuken/worker.rb +2 -0
- data/lib/shoryuken/worker_registry.rb +2 -0
- data/lib/shoryuken.rb +8 -28
- data/shoryuken.gemspec +6 -6
- data/spec/integration/launcher_spec.rb +2 -3
- data/spec/shared_examples_for_active_job.rb +13 -8
- data/spec/shoryuken/body_parser_spec.rb +1 -2
- data/spec/shoryuken/client_spec.rb +1 -1
- data/spec/shoryuken/default_exception_handler_spec.rb +9 -10
- data/spec/shoryuken/default_worker_registry_spec.rb +1 -2
- data/spec/shoryuken/environment_loader_spec.rb +9 -8
- data/spec/shoryuken/extensions/active_job_adapter_spec.rb +2 -1
- data/spec/shoryuken/extensions/active_job_base_spec.rb +2 -1
- data/spec/shoryuken/extensions/active_job_concurrent_send_adapter_spec.rb +2 -1
- data/spec/shoryuken/extensions/active_job_wrapper_spec.rb +2 -1
- data/spec/shoryuken/fetcher_spec.rb +23 -26
- data/spec/shoryuken/helpers/atomic_boolean_spec.rb +196 -0
- data/spec/shoryuken/helpers/atomic_counter_spec.rb +177 -0
- data/spec/shoryuken/helpers/atomic_hash_spec.rb +307 -0
- data/spec/shoryuken/helpers/hash_utils_spec.rb +145 -0
- data/spec/shoryuken/helpers/string_utils_spec.rb +124 -0
- data/spec/shoryuken/helpers_integration_spec.rb +96 -0
- data/spec/shoryuken/inline_message_spec.rb +196 -0
- data/spec/shoryuken/launcher_spec.rb +1 -2
- data/spec/shoryuken/manager_spec.rb +1 -2
- data/spec/shoryuken/middleware/chain_spec.rb +1 -1
- data/spec/shoryuken/middleware/server/auto_delete_spec.rb +1 -1
- data/spec/shoryuken/middleware/server/auto_extend_visibility_spec.rb +1 -1
- data/spec/shoryuken/middleware/server/exponential_backoff_retry_spec.rb +1 -1
- data/spec/shoryuken/middleware/server/timing_spec.rb +1 -1
- data/spec/shoryuken/options_spec.rb +4 -4
- data/spec/shoryuken/polling/base_strategy_spec.rb +280 -0
- data/spec/shoryuken/polling/queue_configuration_spec.rb +195 -0
- data/spec/shoryuken/polling/strict_priority_spec.rb +1 -1
- data/spec/shoryuken/polling/weighted_round_robin_spec.rb +1 -1
- data/spec/shoryuken/processor_spec.rb +1 -1
- data/spec/shoryuken/queue_spec.rb +2 -3
- data/spec/shoryuken/runner_spec.rb +1 -3
- data/spec/shoryuken/util_spec.rb +1 -1
- data/spec/shoryuken/worker/default_executor_spec.rb +1 -1
- data/spec/shoryuken/worker/inline_executor_spec.rb +1 -1
- data/spec/shoryuken/worker_spec.rb +15 -11
- data/spec/shoryuken_spec.rb +1 -1
- data/spec/spec_helper.rb +16 -0
- metadata +60 -27
- data/.github/FUNDING.yml +0 -12
- data/gemfiles/rails_6_1.gemfile +0 -18
- data/lib/shoryuken/core_ext.rb +0 -69
- data/lib/shoryuken/polling/base.rb +0 -67
- data/shoryuken.jpg +0 -0
- data/spec/shoryuken/core_ext_spec.rb +0 -40
data/lib/shoryuken/core_ext.rb
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
module Shoryuken
|
|
2
|
-
module HashExt
|
|
3
|
-
module StringifyKeys
|
|
4
|
-
def stringify_keys
|
|
5
|
-
keys.each do |key|
|
|
6
|
-
self[key.to_s] = delete(key)
|
|
7
|
-
end
|
|
8
|
-
self
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
module SymbolizeKeys
|
|
13
|
-
def symbolize_keys
|
|
14
|
-
keys.each do |key|
|
|
15
|
-
self[(key.to_sym rescue key) || key] = delete(key)
|
|
16
|
-
end
|
|
17
|
-
self
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
module DeepSymbolizeKeys
|
|
22
|
-
def deep_symbolize_keys
|
|
23
|
-
keys.each do |key|
|
|
24
|
-
value = delete(key)
|
|
25
|
-
self[(key.to_sym rescue key) || key] = value
|
|
26
|
-
|
|
27
|
-
value.deep_symbolize_keys if value.is_a? Hash
|
|
28
|
-
end
|
|
29
|
-
self
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
module StringExt
|
|
35
|
-
module Constantize
|
|
36
|
-
def constantize
|
|
37
|
-
names = split('::')
|
|
38
|
-
names.shift if names.empty? || names.first.empty?
|
|
39
|
-
|
|
40
|
-
constant = Object
|
|
41
|
-
names.each do |name|
|
|
42
|
-
constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
|
|
43
|
-
end
|
|
44
|
-
constant
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
begin
|
|
51
|
-
require 'active_support/core_ext/hash/keys'
|
|
52
|
-
require 'active_support/core_ext/hash/deep_merge'
|
|
53
|
-
rescue LoadError
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
class Hash
|
|
57
|
-
include Shoryuken::HashExt::StringifyKeys unless method_defined?(:stringify_keys)
|
|
58
|
-
include Shoryuken::HashExt::SymbolizeKeys unless method_defined?(:symbolize_keys)
|
|
59
|
-
include Shoryuken::HashExt::DeepSymbolizeKeys unless method_defined?(:deep_symbolize_keys)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
begin
|
|
63
|
-
require 'active_support/core_ext/string/inflections'
|
|
64
|
-
rescue LoadError
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
class String
|
|
68
|
-
include Shoryuken::StringExt::Constantize unless method_defined?(:constantize)
|
|
69
|
-
end
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
module Shoryuken
|
|
2
|
-
module Polling
|
|
3
|
-
QueueConfiguration = Struct.new(:name, :options) do
|
|
4
|
-
def hash
|
|
5
|
-
name.hash
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def ==(other)
|
|
9
|
-
case other
|
|
10
|
-
when String
|
|
11
|
-
if options.empty?
|
|
12
|
-
name == other
|
|
13
|
-
else
|
|
14
|
-
false
|
|
15
|
-
end
|
|
16
|
-
else
|
|
17
|
-
super
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
alias_method :eql?, :==
|
|
22
|
-
|
|
23
|
-
def to_s
|
|
24
|
-
if options.empty?
|
|
25
|
-
name
|
|
26
|
-
else
|
|
27
|
-
"#<QueueConfiguration #{name} options=#{options.inspect}>"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
class BaseStrategy
|
|
33
|
-
include Util
|
|
34
|
-
|
|
35
|
-
def next_queue
|
|
36
|
-
fail NotImplementedError
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def messages_found(_queue, _messages_found)
|
|
40
|
-
fail NotImplementedError
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def message_processed(_queue); end
|
|
44
|
-
|
|
45
|
-
def active_queues
|
|
46
|
-
fail NotImplementedError
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def ==(other)
|
|
50
|
-
case other
|
|
51
|
-
when Array
|
|
52
|
-
@queues == other
|
|
53
|
-
else
|
|
54
|
-
if other.respond_to?(:active_queues)
|
|
55
|
-
active_queues == other.active_queues
|
|
56
|
-
else
|
|
57
|
-
false
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def delay
|
|
63
|
-
@delay || Shoryuken.options[:delay].to_f
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
data/shoryuken.jpg
DELETED
|
Binary file
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe 'Core Extensions' do
|
|
4
|
-
describe Hash do
|
|
5
|
-
describe '#stringify_keys' do
|
|
6
|
-
it 'converts keys into strings' do
|
|
7
|
-
expect({ :key1 => 'value1', 'key2' => 'value2' }.stringify_keys).to eq('key1' => 'value1', 'key2' => 'value2')
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
describe '#symbolize_keys' do
|
|
12
|
-
it 'converts keys into symbols' do
|
|
13
|
-
expect({ :key1 => 'value1', 'key2' => 'value2' }.symbolize_keys).to eq(key1: 'value1', key2: 'value2')
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
describe '#deep_symbolize_keys' do
|
|
18
|
-
it 'converts keys into symbols' do
|
|
19
|
-
expect({ :key1 => 'value1',
|
|
20
|
-
'key2' => 'value2',
|
|
21
|
-
'key3' => {
|
|
22
|
-
'key31' => { 'key311' => 'value311' },
|
|
23
|
-
'key32' => 'value32'
|
|
24
|
-
} }.deep_symbolize_keys).to eq(key1: 'value1',
|
|
25
|
-
key2: 'value2',
|
|
26
|
-
key3: { key31: { key311: 'value311' },
|
|
27
|
-
key32: 'value32' })
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
describe String do
|
|
33
|
-
describe '#constantize' do
|
|
34
|
-
class HelloWorld; end
|
|
35
|
-
it 'returns a class from a string' do
|
|
36
|
-
expect('HelloWorld'.constantize).to eq HelloWorld
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|