sidekiq-merger 0.0.12 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3468cfb6c6b95fa60dd5db64e5ce1a4ae04e5aac
4
- data.tar.gz: 0b44b824a0b6ce4caf290fceae0f103c69493b9a
2
+ SHA256:
3
+ metadata.gz: 53e070ac5acbed069e9ac6b49e9f43651bdf0e061a8a29d461e5b40111c8c5f7
4
+ data.tar.gz: 9d08abf9726549e6dacb30a6382591bcb7d86b3bf219c30b4c151b471346872e
5
5
  SHA512:
6
- metadata.gz: aa20b7462ba95c846352e51310eb467657a5808e5cb1d49f15801a516a34bc50e3efab585e4f940259819d1d756dedc6460811273014e8f0438ecebd6e081e64
7
- data.tar.gz: d6d0e0b80540dbe54a1e2adc85fd4d21e4674f6370fae9db3c97b51c41da8fc02152aba089f0452599779834590f9d4087e20617d3ad5687d4e4bd84381a55e8
6
+ metadata.gz: 8baeb68048097d0e32c31ebb099f658fdb7201bccd8fed439956a60d82fd309d67dec63d4bfd95c4276c72d115c669d8fc49bf0405de789d28f3852725f5950c
7
+ data.tar.gz: 874696413e3d3d8b37cfa196b7adb72bb01526080017a9a34142cbd051f153568b03372d23ab36ca8944e05883452d440e88d65d20339ca3c5a35031b0402085
data/.rubocop.yml CHANGED
@@ -11,39 +11,42 @@ Style/StringLiteralsInInterpolation:
11
11
  Enabled: true
12
12
  EnforcedStyle: double_quotes
13
13
 
14
- Style/SpaceBeforeBlockBraces:
14
+ Layout/SpaceBeforeBlockBraces:
15
15
  Enabled: true
16
16
  EnforcedStyle: 'space'
17
17
 
18
- Style/SpaceInsideBrackets:
18
+ Layout/SpaceInsideArrayLiteralBrackets:
19
19
  Enabled: true
20
20
 
21
- Style/SpaceInsideHashLiteralBraces:
21
+ Layout/SpaceInsideReferenceBrackets:
22
22
  Enabled: true
23
23
 
24
- Style/SpaceInsideBlockBraces:
24
+ Layout/SpaceInsideHashLiteralBraces:
25
25
  Enabled: true
26
26
 
27
- Style/SpaceAroundEqualsInParameterDefault:
27
+ Layout/SpaceInsideBlockBraces:
28
28
  Enabled: true
29
29
 
30
- Style/SpaceBeforeComma:
30
+ Layout/SpaceAroundEqualsInParameterDefault:
31
+ Enabled: true
32
+
33
+ Layout/SpaceBeforeComma:
31
34
  Enabled: false
32
35
 
33
- Style/SpaceAroundOperators:
36
+ Layout/SpaceAroundOperators:
34
37
  Enabled: true
35
38
 
36
- Style/SpaceAfterComma:
39
+ Layout/SpaceAfterComma:
37
40
  Enabled: true
38
41
 
39
- Style/ExtraSpacing:
42
+ Layout/ExtraSpacing:
40
43
  Enabled: true
41
44
  AllowForAlignment: true
42
45
 
43
46
  Lint/DuplicateMethods:
44
47
  Enabled: true
45
48
 
46
- Metrics/LineLength:
49
+ Layout/LineLength:
47
50
  Enabled: true
48
51
  Max: 200
49
52
  AllowHeredoc: true
@@ -67,16 +70,13 @@ Style/ClassAndModuleChildren:
67
70
  Exclude:
68
71
  - lib/sidekiq/merger/version.rb
69
72
 
70
- Rails/PluralizationGrammar:
71
- Enabled: true
72
-
73
- Style/AlignArray:
73
+ Layout/ArrayAlignment:
74
74
  Enabled: true
75
75
 
76
- Style/AlignHash:
76
+ Layout/HashAlignment:
77
77
  Enabled: true
78
78
 
79
- Style/BlockEndNewline:
79
+ Layout/BlockEndNewline:
80
80
  Enabled: false
81
81
 
82
82
  Style/DoubleNegation:
data/.travis.yml CHANGED
@@ -1,9 +1,9 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.3.7
5
- - 2.4.4
6
- - 2.5.1
4
+ - 2.5.9
5
+ - 2.6.7
6
+ - 2.7.3
7
7
  gemfile:
8
8
  - gemfiles/sidekiq_4_0.gemfile
9
9
  - gemfiles/sidekiq_4_1.gemfile
data/README.md CHANGED
@@ -105,6 +105,14 @@ Format: `Boolean`
105
105
 
106
106
  e.g. `true`
107
107
 
108
+ ### `batch_size` (optional, default: `nil`)
109
+
110
+ Allow to specify how many jobs max to provide as arguments per aggregation
111
+
112
+ Format: `Int`
113
+
114
+ e.g. `50`
115
+
108
116
  ## Web UI
109
117
 
110
118
  ![Web UI](misc/web_ui.png)
@@ -73,12 +73,16 @@ class Sidekiq::Merger::Merge
73
73
  end
74
74
 
75
75
  unless msgs.empty?
76
- Sidekiq::Client.push(
77
- "class" => worker_class,
78
- "queue" => queue,
79
- "args" => msgs,
80
- "merged" => true
81
- )
76
+ batches = options[:batch_size].nil? ? [msgs] : msgs.each_slice(options[:batch_size].to_i).to_a
77
+ batches.each do |batch_msgs|
78
+ # preserve FIFO when enqueuing batches
79
+ Sidekiq::Client.push(
80
+ "class" => worker_class,
81
+ "queue" => queue,
82
+ "args" => batch_msgs,
83
+ "merged" => true
84
+ )
85
+ end
82
86
  end
83
87
  end
84
88
 
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Merger
3
- VERSION = "0.0.12".freeze
3
+ VERSION = "0.1.0".freeze
4
4
  end
5
5
  end
@@ -22,13 +22,13 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.required_ruby_version = [">= 2.2.2", "< 2.6"]
25
+ spec.required_ruby_version = [">= 2.5.0"]
26
26
 
27
27
  spec.add_development_dependency "rake", ">= 10.0", "< 13"
28
28
  spec.add_development_dependency "rspec", ">= 3.0", "< 4"
29
29
  spec.add_development_dependency "simplecov", "~> 0.12"
30
30
  spec.add_development_dependency "timecop", "~> 0.8"
31
- spec.add_development_dependency "rubocop", "~> 0.47"
31
+ spec.add_development_dependency "rubocop", "~> 0.93.1"
32
32
  spec.add_development_dependency "coveralls", "~> 0.8"
33
33
  spec.add_development_dependency "appraisal"
34
34
 
@@ -141,19 +141,48 @@ describe Sidekiq::Merger::Merge, worker_class: true do
141
141
  end
142
142
 
143
143
  describe "#flush" do
144
- before do
145
- subject.add([1, 2, 3], execution_time)
146
- subject.add([2, 3, 4], execution_time)
144
+ context "when no batch_size is configured" do
145
+ before do
146
+ subject.add([1, 2, 3], execution_time)
147
+ subject.add([2, 3, 4], execution_time)
148
+ end
149
+ it "flushes all the args" do
150
+ expect(Sidekiq::Client).to receive(:push).with(
151
+ "class" => worker_class,
152
+ "queue" => queue,
153
+ "args" => a_collection_containing_exactly([1, 2, 3], [2, 3, 4]),
154
+ "merged" => true
155
+ )
156
+
157
+ subject.flush
158
+ end
147
159
  end
148
- it "flushes all the args" do
149
- expect(Sidekiq::Client).to receive(:push).with(
150
- "class" => worker_class,
151
- "queue" => queue,
152
- "args" => a_collection_containing_exactly([1, 2, 3], [2, 3, 4]),
153
- "merged" => true
154
- )
155
160
 
156
- subject.flush
161
+ context "when batch_size is configured to 2" do
162
+ let(:worker_options) { { key: -> (args) { args.to_json }, batch_size: 2 } }
163
+ before do
164
+ subject.add([1, 2, 3], execution_time)
165
+ subject.add([2, 3, 4], execution_time)
166
+ subject.add([3, 4, 5], execution_time)
167
+ subject.add([4, 5, 6], execution_time)
168
+ end
169
+ it "flushes all the args" do
170
+ expect(Sidekiq::Client).to receive(:push).with(
171
+ "class" => worker_class,
172
+ "queue" => queue,
173
+ "args" => a_collection_containing_exactly([1, 2, 3], [2, 3, 4]),
174
+ "merged" => true
175
+ )
176
+
177
+ expect(Sidekiq::Client).to receive(:push).with(
178
+ "class" => worker_class,
179
+ "queue" => queue,
180
+ "args" => a_collection_containing_exactly([3, 4, 5], [4, 5, 6]),
181
+ "merged" => true
182
+ )
183
+
184
+ subject.flush
185
+ end
157
186
  end
158
187
  end
159
188
 
data/spec/spec_helper.rb CHANGED
@@ -41,6 +41,9 @@ RSpec.configure do |config|
41
41
  Sidekiq::Testing.fake!
42
42
  Sidekiq::Merger.logger = nil
43
43
  Sidekiq.logger = nil
44
+ if Redis.respond_to?(:exists_returns_integer)
45
+ Redis.exists_returns_integer = false
46
+ end
44
47
  end
45
48
 
46
49
  config.around :example do |example|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-merger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - dtaniwaki
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-12 00:00:00.000000000 Z
11
+ date: 2021-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -84,14 +84,14 @@ dependencies:
84
84
  requirements:
85
85
  - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: '0.47'
87
+ version: 0.93.1
88
88
  type: :development
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: '0.47'
94
+ version: 0.93.1
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: coveralls
97
97
  requirement: !ruby/object:Gem::Requirement
@@ -237,7 +237,7 @@ homepage: https://github.com/dtaniwaki/sidekiq-merger
237
237
  licenses:
238
238
  - MIT
239
239
  metadata: {}
240
- post_install_message:
240
+ post_install_message:
241
241
  rdoc_options: []
242
242
  require_paths:
243
243
  - lib
@@ -245,19 +245,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
245
245
  requirements:
246
246
  - - ">="
247
247
  - !ruby/object:Gem::Version
248
- version: 2.2.2
249
- - - "<"
250
- - !ruby/object:Gem::Version
251
- version: '2.6'
248
+ version: 2.5.0
252
249
  required_rubygems_version: !ruby/object:Gem::Requirement
253
250
  requirements:
254
251
  - - ">="
255
252
  - !ruby/object:Gem::Version
256
253
  version: '0'
257
254
  requirements: []
258
- rubyforge_project:
259
- rubygems_version: 2.6.8
260
- signing_key:
255
+ rubygems_version: 3.1.2
256
+ signing_key:
261
257
  specification_version: 4
262
258
  summary: Sidekiq merger plugin
263
259
  test_files: