sidekiq-merger 0.0.12 → 0.1.0

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
- 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: