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
metadata CHANGED
@@ -1,23 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoryuken
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.2.1
4
+ version: 7.0.0.alpha2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Cantero
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-02-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: dotenv
13
+ name: aws-sdk-sqs
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 1.66.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 1.66.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: concurrent-ruby
15
28
  requirement: !ruby/object:Gem::Requirement
16
29
  requirements:
17
30
  - - ">="
18
31
  - !ruby/object:Gem::Version
19
32
  version: '0'
20
- type: :development
33
+ type: :runtime
21
34
  prerelease: false
22
35
  version_requirements: !ruby/object:Gem::Requirement
23
36
  requirements:
@@ -25,13 +38,13 @@ dependencies:
25
38
  - !ruby/object:Gem::Version
26
39
  version: '0'
27
40
  - !ruby/object:Gem::Dependency
28
- name: rake
41
+ name: thor
29
42
  requirement: !ruby/object:Gem::Requirement
30
43
  requirements:
31
44
  - - ">="
32
45
  - !ruby/object:Gem::Version
33
46
  version: '0'
34
- type: :development
47
+ type: :runtime
35
48
  prerelease: false
36
49
  version_requirements: !ruby/object:Gem::Requirement
37
50
  requirements:
@@ -39,7 +52,21 @@ dependencies:
39
52
  - !ruby/object:Gem::Version
40
53
  version: '0'
41
54
  - !ruby/object:Gem::Dependency
42
- name: rspec
55
+ name: zeitwerk
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.6'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.6'
68
+ - !ruby/object:Gem::Dependency
69
+ name: dotenv
43
70
  requirement: !ruby/object:Gem::Requirement
44
71
  requirements:
45
72
  - - ">="
@@ -53,27 +80,27 @@ dependencies:
53
80
  - !ruby/object:Gem::Version
54
81
  version: '0'
55
82
  - !ruby/object:Gem::Dependency
56
- name: aws-sdk-core
83
+ name: ostruct
57
84
  requirement: !ruby/object:Gem::Requirement
58
85
  requirements:
59
86
  - - ">="
60
87
  - !ruby/object:Gem::Version
61
- version: '2'
62
- type: :runtime
88
+ version: '0'
89
+ type: :development
63
90
  prerelease: false
64
91
  version_requirements: !ruby/object:Gem::Requirement
65
92
  requirements:
66
93
  - - ">="
67
94
  - !ruby/object:Gem::Version
68
- version: '2'
95
+ version: '0'
69
96
  - !ruby/object:Gem::Dependency
70
- name: concurrent-ruby
97
+ name: rake
71
98
  requirement: !ruby/object:Gem::Requirement
72
99
  requirements:
73
100
  - - ">="
74
101
  - !ruby/object:Gem::Version
75
102
  version: '0'
76
- type: :runtime
103
+ type: :development
77
104
  prerelease: false
78
105
  version_requirements: !ruby/object:Gem::Requirement
79
106
  requirements:
@@ -81,13 +108,13 @@ dependencies:
81
108
  - !ruby/object:Gem::Version
82
109
  version: '0'
83
110
  - !ruby/object:Gem::Dependency
84
- name: thor
111
+ name: rspec
85
112
  requirement: !ruby/object:Gem::Requirement
86
113
  requirements:
87
114
  - - ">="
88
115
  - !ruby/object:Gem::Version
89
116
  version: '0'
90
- type: :runtime
117
+ type: :development
91
118
  prerelease: false
92
119
  version_requirements: !ruby/object:Gem::Requirement
93
120
  requirements:
@@ -102,18 +129,16 @@ executables:
102
129
  extensions: []
103
130
  extra_rdoc_files: []
104
131
  files:
105
- - ".codeclimate.yml"
106
132
  - ".devcontainer/Dockerfile"
107
133
  - ".devcontainer/base.Dockerfile"
108
134
  - ".devcontainer/devcontainer.json"
109
- - ".github/FUNDING.yml"
110
- - ".github/dependabot.yml"
135
+ - ".github/workflows/push.yml"
111
136
  - ".github/workflows/specs.yml"
112
- - ".github/workflows/stale.yml"
137
+ - ".github/workflows/verify-action-pins.yml"
113
138
  - ".gitignore"
114
- - ".reek.yml"
115
139
  - ".rspec"
116
140
  - ".rubocop.yml"
141
+ - ".ruby-version"
117
142
  - Appraisals
118
143
  - CHANGELOG.md
119
144
  - Gemfile
@@ -123,19 +148,17 @@ files:
123
148
  - bin/cli/base.rb
124
149
  - bin/cli/sqs.rb
125
150
  - bin/shoryuken
151
+ - docker-compose.yml
126
152
  - examples/bootstrap_queues.rb
127
153
  - examples/default_worker.rb
128
154
  - gemfiles/.gitignore
129
- - gemfiles/aws_sdk_core_2.gemfile
130
- - gemfiles/rails_4_2.gemfile
131
- - gemfiles/rails_5_2.gemfile
132
- - gemfiles/rails_6_0.gemfile
133
- - gemfiles/rails_6_1.gemfile
134
155
  - gemfiles/rails_7_0.gemfile
156
+ - gemfiles/rails_7_1.gemfile
157
+ - gemfiles/rails_7_2.gemfile
158
+ - gemfiles/rails_8_0.gemfile
135
159
  - lib/shoryuken.rb
136
160
  - lib/shoryuken/body_parser.rb
137
161
  - lib/shoryuken/client.rb
138
- - lib/shoryuken/core_ext.rb
139
162
  - lib/shoryuken/default_exception_handler.rb
140
163
  - lib/shoryuken/default_worker_registry.rb
141
164
  - lib/shoryuken/environment_loader.rb
@@ -143,6 +166,12 @@ files:
143
166
  - lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb
144
167
  - lib/shoryuken/extensions/active_job_extensions.rb
145
168
  - lib/shoryuken/fetcher.rb
169
+ - lib/shoryuken/helpers/atomic_boolean.rb
170
+ - lib/shoryuken/helpers/atomic_counter.rb
171
+ - lib/shoryuken/helpers/atomic_hash.rb
172
+ - lib/shoryuken/helpers/hash_utils.rb
173
+ - lib/shoryuken/helpers/string_utils.rb
174
+ - lib/shoryuken/inline_message.rb
146
175
  - lib/shoryuken/launcher.rb
147
176
  - lib/shoryuken/logging.rb
148
177
  - lib/shoryuken/manager.rb
@@ -154,7 +183,8 @@ files:
154
183
  - lib/shoryuken/middleware/server/exponential_backoff_retry.rb
155
184
  - lib/shoryuken/middleware/server/timing.rb
156
185
  - lib/shoryuken/options.rb
157
- - lib/shoryuken/polling/base.rb
186
+ - lib/shoryuken/polling/base_strategy.rb
187
+ - lib/shoryuken/polling/queue_configuration.rb
158
188
  - lib/shoryuken/polling/strict_priority.rb
159
189
  - lib/shoryuken/polling/weighted_round_robin.rb
160
190
  - lib/shoryuken/processor.rb
@@ -166,14 +196,13 @@ files:
166
196
  - lib/shoryuken/worker/default_executor.rb
167
197
  - lib/shoryuken/worker/inline_executor.rb
168
198
  - lib/shoryuken/worker_registry.rb
199
+ - renovate.json
169
200
  - shoryuken.gemspec
170
- - shoryuken.jpg
171
201
  - spec/integration/launcher_spec.rb
172
202
  - spec/shared_examples_for_active_job.rb
173
203
  - spec/shoryuken.yml
174
204
  - spec/shoryuken/body_parser_spec.rb
175
205
  - spec/shoryuken/client_spec.rb
176
- - spec/shoryuken/core_ext_spec.rb
177
206
  - spec/shoryuken/default_exception_handler_spec.rb
178
207
  - spec/shoryuken/default_worker_registry_spec.rb
179
208
  - spec/shoryuken/environment_loader_spec.rb
@@ -182,6 +211,13 @@ files:
182
211
  - spec/shoryuken/extensions/active_job_concurrent_send_adapter_spec.rb
183
212
  - spec/shoryuken/extensions/active_job_wrapper_spec.rb
184
213
  - spec/shoryuken/fetcher_spec.rb
214
+ - spec/shoryuken/helpers/atomic_boolean_spec.rb
215
+ - spec/shoryuken/helpers/atomic_counter_spec.rb
216
+ - spec/shoryuken/helpers/atomic_hash_spec.rb
217
+ - spec/shoryuken/helpers/hash_utils_spec.rb
218
+ - spec/shoryuken/helpers/string_utils_spec.rb
219
+ - spec/shoryuken/helpers_integration_spec.rb
220
+ - spec/shoryuken/inline_message_spec.rb
185
221
  - spec/shoryuken/launcher_spec.rb
186
222
  - spec/shoryuken/manager_spec.rb
187
223
  - spec/shoryuken/middleware/chain_spec.rb
@@ -190,6 +226,8 @@ files:
190
226
  - spec/shoryuken/middleware/server/exponential_backoff_retry_spec.rb
191
227
  - spec/shoryuken/middleware/server/timing_spec.rb
192
228
  - spec/shoryuken/options_spec.rb
229
+ - spec/shoryuken/polling/base_strategy_spec.rb
230
+ - spec/shoryuken/polling/queue_configuration_spec.rb
193
231
  - spec/shoryuken/polling/strict_priority_spec.rb
194
232
  - spec/shoryuken/polling/weighted_round_robin_spec.rb
195
233
  - spec/shoryuken/processor_spec.rb
@@ -207,7 +245,6 @@ homepage: https://github.com/ruby-shoryuken/shoryuken
207
245
  licenses:
208
246
  - LGPL-3.0
209
247
  metadata: {}
210
- post_install_message:
211
248
  rdoc_options: []
212
249
  require_paths:
213
250
  - lib
@@ -215,15 +252,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
215
252
  requirements:
216
253
  - - ">="
217
254
  - !ruby/object:Gem::Version
218
- version: '0'
255
+ version: 3.1.0
219
256
  required_rubygems_version: !ruby/object:Gem::Requirement
220
257
  requirements:
221
258
  - - ">="
222
259
  - !ruby/object:Gem::Version
223
260
  version: '0'
224
261
  requirements: []
225
- rubygems_version: 3.3.26
226
- signing_key:
262
+ rubygems_version: 3.6.9
227
263
  specification_version: 4
228
264
  summary: Shoryuken is a super efficient AWS SQS thread based message processor
229
265
  test_files:
@@ -232,7 +268,6 @@ test_files:
232
268
  - spec/shoryuken.yml
233
269
  - spec/shoryuken/body_parser_spec.rb
234
270
  - spec/shoryuken/client_spec.rb
235
- - spec/shoryuken/core_ext_spec.rb
236
271
  - spec/shoryuken/default_exception_handler_spec.rb
237
272
  - spec/shoryuken/default_worker_registry_spec.rb
238
273
  - spec/shoryuken/environment_loader_spec.rb
@@ -241,6 +276,13 @@ test_files:
241
276
  - spec/shoryuken/extensions/active_job_concurrent_send_adapter_spec.rb
242
277
  - spec/shoryuken/extensions/active_job_wrapper_spec.rb
243
278
  - spec/shoryuken/fetcher_spec.rb
279
+ - spec/shoryuken/helpers/atomic_boolean_spec.rb
280
+ - spec/shoryuken/helpers/atomic_counter_spec.rb
281
+ - spec/shoryuken/helpers/atomic_hash_spec.rb
282
+ - spec/shoryuken/helpers/hash_utils_spec.rb
283
+ - spec/shoryuken/helpers/string_utils_spec.rb
284
+ - spec/shoryuken/helpers_integration_spec.rb
285
+ - spec/shoryuken/inline_message_spec.rb
244
286
  - spec/shoryuken/launcher_spec.rb
245
287
  - spec/shoryuken/manager_spec.rb
246
288
  - spec/shoryuken/middleware/chain_spec.rb
@@ -249,6 +291,8 @@ test_files:
249
291
  - spec/shoryuken/middleware/server/exponential_backoff_retry_spec.rb
250
292
  - spec/shoryuken/middleware/server/timing_spec.rb
251
293
  - spec/shoryuken/options_spec.rb
294
+ - spec/shoryuken/polling/base_strategy_spec.rb
295
+ - spec/shoryuken/polling/queue_configuration_spec.rb
252
296
  - spec/shoryuken/polling/strict_priority_spec.rb
253
297
  - spec/shoryuken/polling/weighted_round_robin_spec.rb
254
298
  - spec/shoryuken/processor_spec.rb
data/.codeclimate.yml DELETED
@@ -1,20 +0,0 @@
1
- ---
2
- engines:
3
- reek:
4
- enabled: true
5
- duplication:
6
- enabled: true
7
- config:
8
- languages:
9
- - ruby
10
- fixme:
11
- enabled: true
12
- rubocop:
13
- enabled: true
14
- config:
15
- file: .rubocop.yml
16
- ratings:
17
- paths:
18
- - "**.rb"
19
- exclude_paths:
20
- - spec/
data/.github/FUNDING.yml DELETED
@@ -1,12 +0,0 @@
1
- # These are supported funding model platforms
2
-
3
- github: phstc
4
- patreon: # Replace with a single Patreon username
5
- open_collective: # Replace with a single Open Collective username
6
- ko_fi: # Replace with a single Ko-fi username
7
- tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
- community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
- liberapay: # Replace with a single Liberapay username
10
- issuehunt: # Replace with a single IssueHunt username
11
- otechie: # Replace with a single Otechie username
12
- custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
@@ -1,6 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: "github-actions"
4
- directory: "/"
5
- schedule:
6
- interval: "weekly"
@@ -1,20 +0,0 @@
1
- name: "Close stale issues and PRs"
2
- on:
3
- schedule:
4
- - cron: "30 1 * * *" # At 01:30 - https://crontab.guru/#30_1_*_*_*
5
- workflow_dispatch: {}
6
- jobs:
7
- stale:
8
- runs-on: ubuntu-latest
9
- permissions:
10
- issues: write
11
- pull-requests: write
12
- steps:
13
- - uses: actions/stale@v9
14
- with:
15
- stale-issue-message: This issue is now marked as stale because it hasn't seen activity for a while. Add a comment or it will be closed soon.
16
- stale-pr-message: This PR is now marked as stale because it hasn't seen activity for a while. Add a comment or it will be closed soon.
17
- close-issue-message: This issue was closed because it hasn't seen activity for a while.
18
- close-pr-message: This PR was closed because it hasn't seen activity for a while.
19
- days-before-stale: 60
20
- days-before-close: 7
data/.reek.yml DELETED
@@ -1,5 +0,0 @@
1
- ---
2
- detectors:
3
-
4
- UtilityFunction:
5
- public_methods_only: true
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "activejob"
7
- gem "aws-sdk-core", "~> 2"
8
- gem "codeclimate-test-reporter", require: nil
9
- gem "httparty"
10
- gem "multi_xml"
11
- gem "simplecov"
12
- gem "webrick"
13
- end
14
-
15
- group :development do
16
- gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
17
- gem "pry-byebug"
18
- gem "rubocop"
19
- end
20
-
21
- gemspec path: "../"
@@ -1,20 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "activejob", "~> 4.2"
7
- gem "aws-sdk-core", "~> 3"
8
- gem "aws-sdk-sqs"
9
- gem "codeclimate-test-reporter", require: nil
10
- gem "httparty"
11
- gem "multi_xml"
12
- gem "simplecov"
13
- end
14
-
15
- group :development do
16
- gem "appraisal", "~> 2.2"
17
- gem "rubocop"
18
- end
19
-
20
- gemspec path: "../"
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "activejob", "~> 5.2"
7
- gem "aws-sdk-core", "~> 3"
8
- gem "aws-sdk-sqs"
9
- gem "codeclimate-test-reporter", require: nil
10
- gem "httparty"
11
- gem "multi_xml"
12
- gem "simplecov"
13
- end
14
-
15
- group :development do
16
- gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
17
- gem "pry-byebug", "3.9.0"
18
- gem "rubocop"
19
- end
20
-
21
- gemspec path: "../"
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "activejob", "~> 6.0"
7
- gem "aws-sdk-core", "~> 3"
8
- gem "aws-sdk-sqs"
9
- gem "codeclimate-test-reporter", require: nil
10
- gem "httparty"
11
- gem "multi_xml"
12
- gem "simplecov"
13
- end
14
-
15
- group :development do
16
- gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
17
- gem "pry-byebug", "3.9.0"
18
- gem "rubocop"
19
- end
20
-
21
- gemspec path: "../"
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- group :test do
6
- gem "activejob", "~> 6.1"
7
- gem "aws-sdk-core", "~> 3"
8
- gem "aws-sdk-sqs"
9
- gem "codeclimate-test-reporter", require: nil
10
- gem "httparty"
11
- gem "multi_xml"
12
- gem "simplecov"
13
- end
14
-
15
- group :development do
16
- gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
17
- gem "pry-byebug", "3.9.0"
18
- gem "rubocop"
19
- end
20
-
21
- gemspec path: "../"
@@ -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