sidekiq-merger 0.0.5 → 0.0.6
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/README.md +14 -10
- data/lib/sidekiq/merger.rb +3 -1
- data/lib/sidekiq/merger/logging_observer.rb +2 -2
- data/lib/sidekiq/merger/version.rb +1 -1
- data/spec/sidekiq/merger/logging_observer_spec.rb +19 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe6c788a720ff09719c0c646767a82102ee0c858
|
4
|
+
data.tar.gz: f7e3afc43bd8a75e0dfebbbf31425b97949328aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b45ec5e708f89daf1dbebbfd1c9b32648e2478d89cc38c68f4ffa53fd8d46c050b3aa9c84451488af955615dd213aefb5542a677de752f535e32d2c2482627e7
|
7
|
+
data.tar.gz: a13ed626974a75bfbb12d1763b3cf944f0fd353f3de17b63e0a2e2416ec76b1912fd687259a9d8da77bc688143b45738f44221238d18fb7a9edc860f4971aa61
|
data/README.md
CHANGED
@@ -18,11 +18,11 @@ gem 'sidekiq-merger'
|
|
18
18
|
|
19
19
|
And then execute:
|
20
20
|
|
21
|
-
|
21
|
+
$ bundle
|
22
22
|
|
23
23
|
Or install it yourself as:
|
24
24
|
|
25
|
-
|
25
|
+
$ gem install sidekiq-merger
|
26
26
|
|
27
27
|
## Usage
|
28
28
|
|
@@ -65,6 +65,14 @@ SomeWorker.perform_async 5
|
|
65
65
|
|
66
66
|
In this case, `SomeWorker` will be executed 3 times with args of `[4]`, `[3]` and `[5]`.
|
67
67
|
|
68
|
+
### Quick Check
|
69
|
+
|
70
|
+
Run docker containers to check the behavior of this gem.
|
71
|
+
|
72
|
+
$ docker-compose up
|
73
|
+
|
74
|
+
Then, open `http://localhost:3000/`. You can push jobs from the UI and see what happens in the sidekiq console.
|
75
|
+
|
68
76
|
## Options
|
69
77
|
|
70
78
|
### `key` (optional, default: `nil`)
|
@@ -72,6 +80,7 @@ In this case, `SomeWorker` will be executed 3 times with args of `[4]`, `[3]` an
|
|
72
80
|
Defines merge key so different arguments can be merged.
|
73
81
|
|
74
82
|
Format: `String` or `Proc`
|
83
|
+
|
75
84
|
e.g. `sidekiq_options merger: { key: -> (args) { args[0..1] } }`
|
76
85
|
|
77
86
|
### `unique` (optional, default: `false`)
|
@@ -79,6 +88,7 @@ e.g. `sidekiq_options merger: { key: -> (args) { args[0..1] } }`
|
|
79
88
|
Prevents enqueue of jobs with identical arguments.
|
80
89
|
|
81
90
|
Format: `Boolean`
|
91
|
+
|
82
92
|
e.g. `true`
|
83
93
|
|
84
94
|
## Web UI
|
@@ -93,19 +103,13 @@ require "sidekiq/merger/web"
|
|
93
103
|
|
94
104
|
## Test
|
95
105
|
|
96
|
-
|
106
|
+
$ bundle exec rspec
|
97
107
|
|
98
108
|
The test coverage is available at `./coverage/index.html`.
|
99
109
|
|
100
|
-
To check the behavior of this plugin, you can run docker containers.
|
101
|
-
|
102
|
-
$ docker-compose up
|
103
|
-
|
104
|
-
Then, open `http://localhost:3000/`.
|
105
|
-
|
106
110
|
## Lint
|
107
111
|
|
108
|
-
|
112
|
+
$ bundle exec rubocop
|
109
113
|
|
110
114
|
## Contributing
|
111
115
|
|
data/lib/sidekiq/merger.rb
CHANGED
@@ -7,6 +7,8 @@ require_relative "merger/flusher"
|
|
7
7
|
require_relative "merger/logging_observer"
|
8
8
|
|
9
9
|
module Sidekiq::Merger
|
10
|
+
LOGGER_TAG = self.name.freeze
|
11
|
+
|
10
12
|
class << self
|
11
13
|
attr_accessor :logger
|
12
14
|
|
@@ -19,7 +21,7 @@ module Sidekiq::Merger
|
|
19
21
|
) { flusher.flush }
|
20
22
|
task.add_observer(observer)
|
21
23
|
logger.info(
|
22
|
-
"[Sidekiq::Merger] Started polling merges every #{interval} seconds"
|
24
|
+
"[#{Sidekiq::Merger::LOGGER_TAG}] Started polling merges every #{interval} seconds"
|
23
25
|
)
|
24
26
|
task.execute
|
25
27
|
end
|
@@ -6,11 +6,11 @@ class Sidekiq::Merger::LoggingObserver
|
|
6
6
|
def update(time, _result, ex)
|
7
7
|
if ex.is_a?(Concurrent::TimeoutError)
|
8
8
|
@logger.error(
|
9
|
-
"[Sidekiq::
|
9
|
+
"[#{Sidekiq::Merger::LOGGER_TAG}] Execution timed out\n"
|
10
10
|
)
|
11
11
|
elsif ex.present?
|
12
12
|
@logger.error(
|
13
|
-
"[Sidekiq::
|
13
|
+
"[#{Sidekiq::Merger::LOGGER_TAG}] Execution failed with error #{ex}\n"
|
14
14
|
)
|
15
15
|
end
|
16
16
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Sidekiq::Merger::LoggingObserver do
|
4
|
+
subject { described_class.new(logger) }
|
5
|
+
let(:logger) { Logger.new("/dev/null") }
|
6
|
+
let(:now) { Time.now }
|
7
|
+
before { Timecop.freeze(now) }
|
8
|
+
|
9
|
+
describe "#update" do
|
10
|
+
it "logs a timeout" do
|
11
|
+
expect(logger).to receive(:error).with("[Sidekiq::Merger] Execution timed out\n")
|
12
|
+
subject.update(now, nil, Concurrent::TimeoutError.new)
|
13
|
+
end
|
14
|
+
it "logs an error" do
|
15
|
+
expect(logger).to receive(:error).with("[Sidekiq::Merger] Execution failed with error foo\n")
|
16
|
+
subject.update(now, nil, "foo")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-merger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dtaniwaki
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- misc/web_ui.png
|
202
202
|
- sidekiq-merger.gemspec
|
203
203
|
- spec/sidekiq/merger/flusher_spec.rb
|
204
|
+
- spec/sidekiq/merger/logging_observer_spec.rb
|
204
205
|
- spec/sidekiq/merger/merge_spec.rb
|
205
206
|
- spec/sidekiq/merger/middleware_spec.rb
|
206
207
|
- spec/sidekiq/merger/redis_spec.rb
|
@@ -236,6 +237,7 @@ specification_version: 4
|
|
236
237
|
summary: Sidekiq merger plugin
|
237
238
|
test_files:
|
238
239
|
- spec/sidekiq/merger/flusher_spec.rb
|
240
|
+
- spec/sidekiq/merger/logging_observer_spec.rb
|
239
241
|
- spec/sidekiq/merger/merge_spec.rb
|
240
242
|
- spec/sidekiq/merger/middleware_spec.rb
|
241
243
|
- spec/sidekiq/merger/redis_spec.rb
|