shoryuken 6.2.1 → 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.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/base.Dockerfile +1 -1
  3. data/.github/workflows/push.yml +36 -0
  4. data/.github/workflows/specs.yml +40 -30
  5. data/.github/workflows/verify-action-pins.yml +16 -0
  6. data/.gitignore +2 -1
  7. data/.rspec +2 -1
  8. data/.rubocop.yml +6 -1
  9. data/.ruby-version +1 -0
  10. data/Appraisals +8 -27
  11. data/CHANGELOG.md +213 -139
  12. data/Gemfile +2 -7
  13. data/README.md +14 -26
  14. data/Rakefile +2 -0
  15. data/bin/cli/base.rb +1 -2
  16. data/bin/cli/sqs.rb +13 -5
  17. data/bin/shoryuken +2 -1
  18. data/docker-compose.yml +22 -0
  19. data/gemfiles/rails_7_0.gemfile +10 -13
  20. data/gemfiles/rails_7_1.gemfile +19 -0
  21. data/gemfiles/rails_7_2.gemfile +19 -0
  22. data/gemfiles/rails_8_0.gemfile +19 -0
  23. data/lib/shoryuken/body_parser.rb +3 -1
  24. data/lib/shoryuken/client.rb +2 -0
  25. data/lib/shoryuken/default_exception_handler.rb +2 -0
  26. data/lib/shoryuken/default_worker_registry.rb +11 -11
  27. data/lib/shoryuken/environment_loader.rb +6 -6
  28. data/lib/shoryuken/extensions/active_job_adapter.rb +13 -6
  29. data/lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb +5 -5
  30. data/lib/shoryuken/extensions/active_job_extensions.rb +2 -0
  31. data/lib/shoryuken/fetcher.rb +4 -2
  32. data/lib/shoryuken/helpers/atomic_boolean.rb +44 -0
  33. data/lib/shoryuken/helpers/atomic_counter.rb +104 -0
  34. data/lib/shoryuken/helpers/atomic_hash.rb +182 -0
  35. data/lib/shoryuken/helpers/hash_utils.rb +56 -0
  36. data/lib/shoryuken/helpers/string_utils.rb +65 -0
  37. data/lib/shoryuken/inline_message.rb +22 -0
  38. data/lib/shoryuken/launcher.rb +2 -0
  39. data/lib/shoryuken/logging.rb +19 -5
  40. data/lib/shoryuken/manager.rb +15 -5
  41. data/lib/shoryuken/message.rb +2 -0
  42. data/lib/shoryuken/middleware/chain.rb +2 -0
  43. data/lib/shoryuken/middleware/server/active_record.rb +2 -0
  44. data/lib/shoryuken/middleware/server/auto_delete.rb +2 -0
  45. data/lib/shoryuken/middleware/server/auto_extend_visibility.rb +10 -10
  46. data/lib/shoryuken/middleware/server/exponential_backoff_retry.rb +5 -3
  47. data/lib/shoryuken/middleware/server/timing.rb +2 -0
  48. data/lib/shoryuken/options.rb +14 -5
  49. data/lib/shoryuken/polling/base_strategy.rb +126 -0
  50. data/lib/shoryuken/polling/queue_configuration.rb +103 -0
  51. data/lib/shoryuken/polling/strict_priority.rb +2 -0
  52. data/lib/shoryuken/polling/weighted_round_robin.rb +2 -0
  53. data/lib/shoryuken/processor.rb +5 -2
  54. data/lib/shoryuken/queue.rb +6 -4
  55. data/lib/shoryuken/runner.rb +9 -12
  56. data/lib/shoryuken/util.rb +6 -6
  57. data/lib/shoryuken/version.rb +3 -1
  58. data/lib/shoryuken/worker/default_executor.rb +2 -0
  59. data/lib/shoryuken/worker/inline_executor.rb +9 -2
  60. data/lib/shoryuken/worker.rb +2 -0
  61. data/lib/shoryuken/worker_registry.rb +2 -0
  62. data/lib/shoryuken.rb +11 -34
  63. data/renovate.json +16 -0
  64. data/shoryuken.gemspec +7 -4
  65. data/spec/integration/launcher_spec.rb +3 -4
  66. data/spec/shared_examples_for_active_job.rb +13 -8
  67. data/spec/shoryuken/body_parser_spec.rb +2 -4
  68. data/spec/shoryuken/client_spec.rb +1 -1
  69. data/spec/shoryuken/default_exception_handler_spec.rb +9 -10
  70. data/spec/shoryuken/default_worker_registry_spec.rb +1 -2
  71. data/spec/shoryuken/environment_loader_spec.rb +9 -8
  72. data/spec/shoryuken/extensions/active_job_adapter_spec.rb +2 -1
  73. data/spec/shoryuken/extensions/active_job_base_spec.rb +2 -1
  74. data/spec/shoryuken/extensions/active_job_concurrent_send_adapter_spec.rb +2 -1
  75. data/spec/shoryuken/extensions/active_job_wrapper_spec.rb +2 -1
  76. data/spec/shoryuken/fetcher_spec.rb +23 -26
  77. data/spec/shoryuken/helpers/atomic_boolean_spec.rb +196 -0
  78. data/spec/shoryuken/helpers/atomic_counter_spec.rb +177 -0
  79. data/spec/shoryuken/helpers/atomic_hash_spec.rb +307 -0
  80. data/spec/shoryuken/helpers/hash_utils_spec.rb +145 -0
  81. data/spec/shoryuken/helpers/string_utils_spec.rb +124 -0
  82. data/spec/shoryuken/helpers_integration_spec.rb +96 -0
  83. data/spec/shoryuken/inline_message_spec.rb +196 -0
  84. data/spec/shoryuken/launcher_spec.rb +1 -2
  85. data/spec/shoryuken/manager_spec.rb +1 -2
  86. data/spec/shoryuken/middleware/chain_spec.rb +1 -1
  87. data/spec/shoryuken/middleware/server/auto_delete_spec.rb +1 -1
  88. data/spec/shoryuken/middleware/server/auto_extend_visibility_spec.rb +1 -1
  89. data/spec/shoryuken/middleware/server/exponential_backoff_retry_spec.rb +1 -1
  90. data/spec/shoryuken/middleware/server/timing_spec.rb +1 -1
  91. data/spec/shoryuken/options_spec.rb +4 -4
  92. data/spec/shoryuken/polling/base_strategy_spec.rb +280 -0
  93. data/spec/shoryuken/polling/queue_configuration_spec.rb +195 -0
  94. data/spec/shoryuken/polling/strict_priority_spec.rb +1 -1
  95. data/spec/shoryuken/polling/weighted_round_robin_spec.rb +1 -1
  96. data/spec/shoryuken/processor_spec.rb +1 -1
  97. data/spec/shoryuken/queue_spec.rb +2 -3
  98. data/spec/shoryuken/runner_spec.rb +1 -3
  99. data/spec/shoryuken/util_spec.rb +1 -1
  100. data/spec/shoryuken/worker/default_executor_spec.rb +1 -1
  101. data/spec/shoryuken/worker/inline_executor_spec.rb +57 -1
  102. data/spec/shoryuken/worker_spec.rb +15 -11
  103. data/spec/shoryuken_spec.rb +1 -1
  104. data/spec/spec_helper.rb +19 -4
  105. metadata +79 -35
  106. data/.codeclimate.yml +0 -20
  107. data/.github/FUNDING.yml +0 -12
  108. data/.github/dependabot.yml +0 -6
  109. data/.github/workflows/stale.yml +0 -20
  110. data/.reek.yml +0 -5
  111. data/gemfiles/aws_sdk_core_2.gemfile +0 -21
  112. data/gemfiles/rails_4_2.gemfile +0 -20
  113. data/gemfiles/rails_5_2.gemfile +0 -21
  114. data/gemfiles/rails_6_0.gemfile +0 -21
  115. data/gemfiles/rails_6_1.gemfile +0 -21
  116. data/lib/shoryuken/core_ext.rb +0 -69
  117. data/lib/shoryuken/polling/base.rb +0 -67
  118. data/shoryuken.jpg +0 -0
  119. data/spec/shoryuken/core_ext_spec.rb +0 -40
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6168df5d49a143c56908e559afcaddc28f7416176881429069cd12680db867c6
4
- data.tar.gz: 1c3a73c4e269457b29962f0a0ac9ba56093ab58cbfab7b00c9aa79c0eb7cb186
3
+ metadata.gz: 962cd757e952228ae34b93d4fa479c623a2cc60e84aa15bbd40645546bb58a59
4
+ data.tar.gz: 2313131f61b7299be011498977450cd8eb06392fa176d095111a7195a86eb033
5
5
  SHA512:
6
- metadata.gz: 3ba49924964a3c98336a3b68e008d831549247574d2f180c72e600bef1dfbcdfa142a863d5e49b100f226d6d5aaf3e0b00fc972968e0ec3502121f10661f9c10
7
- data.tar.gz: 9cc7f3b45550ff308213ceb72f2098a0bd1ae868c4b1401fbe3fe1a0cb8b43467c347ac2b396e0bcb2148f1d9927a46da43951a8550d027c0e9ba28db0739840
6
+ metadata.gz: ffc81ebcf932be68803e4745bdd0070c67f65bfd1a638ef455cb4339d3f5dc3803b11ff11de9bb2892f3205ec7cff81ce2f807700fa3f0869a683ffc9255541e
7
+ data.tar.gz: d4881cd3e103f290bbfefa48e4d20d8537e4d4aa32d269567bf18b1a77545fc188cc4fe90876a7053c29c527ff94d614d46713e504f7f0f6d117ee25d0a6e779
@@ -1,5 +1,5 @@
1
1
  # [Choice] Ruby version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.1, 3.0, 2, 2.7, 2.6, 3-bullseye, 3.1-bullseye, 3.0-bullseye, 2-bullseye, 2.7-bullseye, 2.6-bullseye, 3-buster, 3.1-buster, 3.0-buster, 2-buster, 2.7-buster, 2.6-buster
2
- ARG VARIANT=2-bullseye
2
+ ARG VARIANT=3-bullseye
3
3
  FROM ruby:${VARIANT}
4
4
 
5
5
  # Copy library scripts to execute
@@ -0,0 +1,36 @@
1
+ name: Push Gem
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - v*
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ push:
13
+ if: github.repository_owner == 'ruby-shoryuken'
14
+ runs-on: ubuntu-latest
15
+ environment: deployment
16
+
17
+ permissions:
18
+ contents: write
19
+ id-token: write
20
+
21
+ steps:
22
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
23
+ with:
24
+ fetch-depth: 0
25
+
26
+ - name: Set up Ruby
27
+ uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
28
+ with:
29
+ bundler-cache: false
30
+
31
+ - name: Bundle install
32
+ run: |
33
+ bundle install --jobs 4 --retry 3
34
+
35
+ # Release
36
+ - uses: rubygems/release-gem@1c162a739e8b4cb21a676e97b087e8268d8fc40b # v1.1.2
@@ -1,65 +1,75 @@
1
1
  name: Specs
2
-
3
2
  on:
4
3
  - push
5
4
  - pull_request
6
-
7
5
  jobs:
8
6
  all_specs:
9
7
  name: All Specs
10
8
  strategy:
11
9
  matrix:
12
- ruby: ['2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2']
13
- gemfile: ['Gemfile', 'gemfiles/aws_sdk_core_2.gemfile']
14
- runs-on: ubuntu-20.04
15
- services:
16
- moto_sqs:
17
- image: quay.io/cjlarose/moto-sqs-server:1.1.0
18
- ports:
19
- - 5000:5000
20
- env:
21
- BUNDLE_GEMFILE: ${{ matrix.gemfile }}
10
+ ruby: ['3.1', '3.2', '3.3', '3.4']
11
+ gemfile: ['Gemfile']
12
+ runs-on: ubuntu-latest
22
13
  steps:
23
14
  - name: Checkout code
24
- uses: actions/checkout@v2
25
- - uses: ruby/setup-ruby@v1
15
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
16
+
17
+ - name: Start LocalStack
18
+ run: docker compose up -d
19
+
20
+ - name: Wait for LocalStack
21
+ run: |
22
+ timeout 30s bash -c '
23
+ until curl -s http://localhost:4566/_localstack/health | grep -q "\"sqs\": \"available\""; do
24
+ echo "Waiting for LocalStack..."
25
+ sleep 2
26
+ done
27
+ '
28
+
29
+ - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
26
30
  with:
27
31
  ruby-version: ${{ matrix.ruby }}
28
32
  bundler-cache: true
33
+
29
34
  - name: Run specs
30
35
  run: bundle exec rake spec
36
+ env:
37
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
38
+
31
39
  - name: Run integration specs
32
40
  run: bundle exec rake spec:integration
41
+ env:
42
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
43
+
33
44
  rails_specs:
34
45
  name: Rails Specs
35
46
  strategy:
36
47
  matrix:
37
- rails: ['4.2', '5.2', '6.0', '6.1', '7.0']
48
+ rails: ['7.0', '7.1', '7.2', '8.0']
38
49
  include:
39
- - rails: '4.2'
40
- ruby: '2.2'
41
- gemfile: gemfiles/rails_4_2.gemfile
42
- - rails: '5.2'
43
- ruby: '2.5'
44
- gemfile: gemfiles/rails_5_2.gemfile
45
- - rails: '6.0'
46
- ruby: '2.6'
47
- gemfile: gemfiles/rails_6_0.gemfile
48
- - rails: '6.1'
49
- ruby: '3.0'
50
- gemfile: gemfiles/rails_6_1.gemfile
51
50
  - rails: '7.0'
52
51
  ruby: '3.1'
53
52
  gemfile: gemfiles/rails_7_0.gemfile
54
- runs-on: ubuntu-20.04
53
+ - rails: '7.1'
54
+ ruby: '3.2'
55
+ gemfile: gemfiles/rails_7_1.gemfile
56
+ - rails: '7.2'
57
+ ruby: '3.3'
58
+ gemfile: gemfiles/rails_7_2.gemfile
59
+ - rails: '8.0'
60
+ ruby: '3.4'
61
+ gemfile: gemfiles/rails_8_0.gemfile
62
+ runs-on: ubuntu-latest
55
63
  env:
56
64
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
57
65
  steps:
58
66
  - name: Checkout code
59
- uses: actions/checkout@v2
60
- - uses: ruby/setup-ruby@v1
67
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
68
+
69
+ - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
61
70
  with:
62
71
  ruby-version: ${{ matrix.ruby }}
63
72
  bundler-cache: true
73
+
64
74
  - name: Run Rails specs
65
75
  run: bundle exec rake spec:rails
@@ -0,0 +1,16 @@
1
+ name: Verify Action Pins
2
+ on:
3
+ pull_request:
4
+ paths:
5
+ - '.github/workflows/**'
6
+ jobs:
7
+ verify:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
11
+ - name: Check SHA pins
12
+ run: |
13
+ if grep -E -r "uses: .*/.*@(v[0-9]+|main|master)($|[[:space:]]|$)" --include="*.yml" --include="*.yaml" .github/workflows/ | grep -v "#"; then
14
+ echo "::error::Actions should use SHA pins, not tags or branch names"
15
+ exit 1
16
+ fi
data/.gitignore CHANGED
@@ -25,4 +25,5 @@ shoryuken.yml
25
25
  *.log
26
26
  .env
27
27
  rubocop.html
28
- .byebug_history
28
+ .byebug_history
29
+ .localstack
data/.rspec CHANGED
@@ -1 +1,2 @@
1
- --color
1
+ --color
2
+ --require spec_helper
data/.rubocop.yml CHANGED
@@ -1,7 +1,12 @@
1
1
  AllCops:
2
2
  Exclude:
3
3
  - '**/Gemfile'
4
- TargetRubyVersion: 2.4
4
+ TargetRubyVersion: 3.4
5
+
6
+ Metrics/BlockLength:
7
+ AllowedMethods:
8
+ - describe
9
+ - context
5
10
 
6
11
  Metrics/PerceivedComplexity:
7
12
  Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.4.7
data/Appraisals CHANGED
@@ -1,42 +1,23 @@
1
- appraise 'aws_sdk_core_2' do
2
- group :test do
3
- gem 'aws-sdk-core', '~> 2'
4
- gem 'webrick' # required for Ruby 3
5
- remove_gem 'aws-sdk-sqs'
6
- end
7
- end
8
-
9
- appraise 'rails_4_2' do
10
- group :test do
11
- gem 'activejob', '~> 4.2'
12
- end
13
-
14
- group :development do
15
- gem 'appraisal', '~> 2.2'
16
- remove_gem 'pry-byebug'
17
- end
18
- end
19
-
20
- appraise 'rails_5_2' do
1
+ appraise 'rails_7_0' do
21
2
  group :test do
22
- gem 'activejob', '~> 5.2'
3
+ gem 'activejob', '~> 7.0'
23
4
  end
24
5
  end
25
6
 
26
- appraise 'rails_6_0' do
7
+ appraise 'rails_7_1' do
27
8
  group :test do
28
- gem 'activejob', '~> 6.0'
9
+ gem 'activejob', '~> 7.1'
29
10
  end
30
11
  end
31
12
 
32
- appraise 'rails_6_1' do
13
+ appraise 'rails_7_2' do
33
14
  group :test do
34
- gem 'activejob', '~> 6.1'
15
+ gem 'activejob', '~> 7.2'
35
16
  end
36
17
  end
37
18
 
38
- appraise 'rails_7_0' do
19
+ appraise 'rails_8_0' do
39
20
  group :test do
40
- gem 'activejob', '~> 7.0'
21
+ gem 'activejob', '~> 8.0'
41
22
  end
42
23
  end