sidekiq-merger 0.0.1 → 0.0.4
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/.dockerignore +21 -0
- data/.gemrelease +2 -0
- data/.gitignore +19 -9
- data/.travis.yml +5 -1
- data/Dockerfile +10 -0
- data/Gemfile +3 -1
- data/README.md +68 -6
- data/app/Gemfile +8 -0
- data/app/app.rb +43 -0
- data/app/config.ru +3 -0
- data/app/sidekiq.rb +25 -0
- data/app/some_worker.rb +9 -0
- data/app/unique_worker.rb +9 -0
- data/app/views/index.erb +35 -0
- data/docker-compose-common.yml +7 -0
- data/docker-compose.yml +26 -0
- data/lib/sidekiq/merger.rb +14 -18
- data/lib/sidekiq/merger/flusher.rb +4 -4
- data/lib/sidekiq/merger/merge.rb +113 -0
- data/lib/sidekiq/merger/middleware.rb +6 -4
- data/lib/sidekiq/merger/redis.rb +52 -25
- data/lib/sidekiq/merger/version.rb +1 -1
- data/lib/sidekiq/merger/views/index.erb +41 -0
- data/lib/sidekiq/merger/web.rb +22 -0
- data/misc/web_ui.png +0 -0
- data/sidekiq-merger.gemspec +9 -11
- data/spec/sidekiq/merger/flusher_spec.rb +7 -7
- data/spec/sidekiq/merger/{batch_spec.rb → merge_spec.rb} +31 -17
- data/spec/sidekiq/merger/middleware_spec.rb +12 -6
- data/spec/sidekiq/merger/redis_spec.rb +99 -69
- data/spec/spec_helper.rb +7 -2
- metadata +73 -66
- data/bin/console +0 -7
- data/bin/setup +0 -8
- data/lib/sidekiq/merger/batch.rb +0 -100
@@ -17,7 +17,7 @@ describe Sidekiq::Merger::Middleware do
|
|
17
17
|
"name"
|
18
18
|
end
|
19
19
|
|
20
|
-
def perform(args)
|
20
|
+
def perform(*args)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -26,7 +26,7 @@ describe Sidekiq::Merger::Middleware do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "#call" do
|
29
|
-
it "adds the args to the
|
29
|
+
it "adds the args to the merge" do
|
30
30
|
subject.call(worker_class, { "args" => [1, 2, 3], "at" => now + 10.seconds }, queue) {}
|
31
31
|
subject.call(worker_class, { "args" => [2, 3, 4], "at" => now + 15.seconds }, queue) {}
|
32
32
|
flusher.flush
|
@@ -36,15 +36,21 @@ describe Sidekiq::Merger::Middleware do
|
|
36
36
|
expect(worker_class.jobs.size).to eq 1
|
37
37
|
job = worker_class.jobs[0]
|
38
38
|
expect(job["queue"]).to eq queue
|
39
|
-
expect(job["args"]).to
|
39
|
+
expect(job["args"]).to contain_exactly [1, 2, 3], [2, 3, 4]
|
40
40
|
end
|
41
41
|
context "without at msg" do
|
42
|
-
it "
|
43
|
-
subject.call(worker_class, { "args" => [1, 2, 3] }, queue) {}
|
44
|
-
subject.call(worker_class, { "args" => [2, 3, 4] }, queue) {}
|
42
|
+
it "peforms now with brackets" do
|
43
|
+
expect { |b| subject.call(worker_class, { "args" => [1, 2, 3] }, queue, &b) }.to yield_with_args(worker_class, { "args" => [[1, 2, 3]] }, queue, anything)
|
45
44
|
flusher.flush
|
46
45
|
expect(worker_class.jobs.size).to eq 0
|
47
46
|
end
|
47
|
+
context "merged msgs" do
|
48
|
+
it "performs now" do
|
49
|
+
expect { |b| subject.call(worker_class, { "args" => [[1, 2, 3]], "merged" => true }, queue, &b) }.to yield_with_args(worker_class, { "args" => [[1, 2, 3]] }, queue, anything)
|
50
|
+
flusher.flush
|
51
|
+
expect(worker_class.jobs.size).to eq 0
|
52
|
+
end
|
53
|
+
end
|
48
54
|
end
|
49
55
|
end
|
50
56
|
end
|
@@ -9,7 +9,8 @@ describe Sidekiq::Merger::Redis do
|
|
9
9
|
describe ".purge" do
|
10
10
|
it "cleans up all the keys" do
|
11
11
|
described_class.redis do |conn|
|
12
|
-
conn.sadd("sidekiq-merger:
|
12
|
+
conn.sadd("sidekiq-merger:merges", "test")
|
13
|
+
conn.set("sidekiq-merger:unique_msg:foo", "test")
|
13
14
|
conn.set("sidekiq-merger:msg:foo", "test")
|
14
15
|
conn.set("sidekiq-merger:lock:foo", "test")
|
15
16
|
end
|
@@ -17,7 +18,8 @@ describe Sidekiq::Merger::Redis do
|
|
17
18
|
described_class.purge!
|
18
19
|
|
19
20
|
described_class.redis do |conn|
|
20
|
-
expect(conn.smembers("sidekiq-merger:
|
21
|
+
expect(conn.smembers("sidekiq-merger:merges")).to be_empty
|
22
|
+
expect(conn.keys("sidekiq-merger:unique_msg:*")).to be_empty
|
21
23
|
expect(conn.keys("sidekiq-merger:msg:*")).to be_empty
|
22
24
|
expect(conn.keys("sidekiq-merger:lock:*")).to be_empty
|
23
25
|
end
|
@@ -25,84 +27,101 @@ describe Sidekiq::Merger::Redis do
|
|
25
27
|
end
|
26
28
|
|
27
29
|
describe "#push" do
|
28
|
-
|
29
|
-
subject.push("foo", [1, 2, 3], execution_time)
|
30
|
-
described_class.redis do |conn|
|
31
|
-
expect(conn.smembers("sidekiq-merger:batches")).to contain_exactly "foo"
|
32
|
-
expect(conn.keys("sidekiq-merger:time:*")).to contain_exactly "sidekiq-merger:time:foo"
|
33
|
-
expect(conn.keys("sidekiq-merger:msg:*")).to contain_exactly "sidekiq-merger:msg:foo"
|
34
|
-
expect(conn.smembers("sidekiq-merger:msg:foo")).to contain_exactly "[1,2,3]"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
it "sets the execution time" do
|
38
|
-
subject.push("foo", [1, 2, 3], execution_time)
|
39
|
-
described_class.redis do |conn|
|
40
|
-
expect(conn.get("sidekiq-merger:time:foo")).to eq execution_time.to_json
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context "the batch key already exists" do
|
45
|
-
before do
|
46
|
-
subject.push("foo", [1, 2, 3], execution_time)
|
47
|
-
end
|
30
|
+
shared_examples_for "push spec" do
|
48
31
|
it "pushes the args" do
|
49
|
-
subject.push(
|
32
|
+
subject.push(pushing_key, pushing_msg, pushing_execution_time)
|
50
33
|
described_class.redis do |conn|
|
51
|
-
expect(conn.smembers("sidekiq-merger:
|
52
|
-
expect(conn.keys("sidekiq-merger:time:*")).to contain_exactly
|
53
|
-
expect(conn.keys("sidekiq-merger:
|
54
|
-
|
34
|
+
expect(conn.smembers("sidekiq-merger:merges")).to contain_exactly(*merge_keys)
|
35
|
+
expect(conn.keys("sidekiq-merger:time:*")).to contain_exactly(*times.keys)
|
36
|
+
expect(conn.keys("sidekiq-merger:unique_msg:*")).to contain_exactly(*unique_msgs_h.keys)
|
37
|
+
unique_msgs_h.each do |key, msgs|
|
38
|
+
expect(conn.smembers(key)).to contain_exactly(*msgs)
|
39
|
+
end
|
40
|
+
expect(conn.keys("sidekiq-merger:msg:*")).to contain_exactly(*msgs_h.keys)
|
41
|
+
msgs_h.each do |key, msgs|
|
42
|
+
expect(conn.lrange(key, 0, -1)).to contain_exactly(*msgs)
|
43
|
+
end
|
55
44
|
end
|
56
45
|
end
|
57
|
-
it "
|
58
|
-
subject.push(
|
46
|
+
it "sets the execution time" do
|
47
|
+
subject.push(pushing_key, pushing_msg, pushing_execution_time)
|
59
48
|
described_class.redis do |conn|
|
60
|
-
|
49
|
+
merge_keys.each do |key, time|
|
50
|
+
expect(conn.get(key)).to eq time
|
51
|
+
end
|
61
52
|
end
|
62
53
|
end
|
63
54
|
end
|
64
55
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
described_class.redis do |conn|
|
81
|
-
expect(conn.get("sidekiq-merger:time:foo")).to eq execution_time.to_json
|
82
|
-
end
|
83
|
-
end
|
56
|
+
let(:pushing_key) { "foo" }
|
57
|
+
let(:pushing_msg) { [1, 2, 3] }
|
58
|
+
let(:pushing_execution_time) { execution_time }
|
59
|
+
|
60
|
+
include_examples "push spec" do
|
61
|
+
let(:merge_keys) { ["foo"] }
|
62
|
+
let(:times) { {
|
63
|
+
"sidekiq-merger:time:foo" => execution_time.to_i.to_s,
|
64
|
+
} }
|
65
|
+
let(:unique_msgs_h) { {
|
66
|
+
"sidekiq-merger:unique_msg:foo" => ["[1,2,3]"]
|
67
|
+
} }
|
68
|
+
let(:msgs_h) { {
|
69
|
+
"sidekiq-merger:msg:foo" => ["[1,2,3]"]
|
70
|
+
} }
|
84
71
|
end
|
85
72
|
|
86
|
-
context "
|
87
|
-
|
88
|
-
|
73
|
+
context "the merge key already exists" do
|
74
|
+
let(:pushing_msg) { [2, 3, 4] }
|
75
|
+
before { subject.push("foo", [1, 2, 3], execution_time) }
|
76
|
+
include_examples "push spec" do
|
77
|
+
let(:merge_keys) { ["foo"] }
|
78
|
+
let(:times) { {
|
79
|
+
"sidekiq-merger:time:foo" => execution_time.to_i.to_s,
|
80
|
+
} }
|
81
|
+
let(:unique_msgs_h) { {
|
82
|
+
"sidekiq-merger:unique_msg:foo" => ["[1,2,3]", "[2,3,4]"]
|
83
|
+
} }
|
84
|
+
let(:msgs_h) { {
|
85
|
+
"sidekiq-merger:msg:foo" => ["[1,2,3]", "[2,3,4]"]
|
86
|
+
} }
|
89
87
|
end
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
88
|
+
end
|
89
|
+
|
90
|
+
context "the args has already ben pushed" do
|
91
|
+
before { subject.push("foo", [1, 2, 3], execution_time) }
|
92
|
+
include_examples "push spec" do
|
93
|
+
let(:merge_keys) { ["foo"] }
|
94
|
+
let(:times) { {
|
95
|
+
"sidekiq-merger:time:foo" => execution_time.to_i.to_s,
|
96
|
+
} }
|
97
|
+
let(:unique_msgs_h) { {
|
98
|
+
"sidekiq-merger:unique_msg:foo" => ["[1,2,3]"]
|
99
|
+
} }
|
100
|
+
let(:msgs_h) { {
|
101
|
+
"sidekiq-merger:msg:foo" => ["[1,2,3]", "[1,2,3]"]
|
102
|
+
} }
|
99
103
|
end
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
104
|
+
end
|
105
|
+
|
106
|
+
context "other merge key already exists" do
|
107
|
+
let(:pushing_key) { "bar" }
|
108
|
+
let(:pushing_msg) { [2, 3, 4] }
|
109
|
+
let(:pushing_execution_time) { execution_time + 1.hour }
|
110
|
+
before { subject.push("foo", [1, 2, 3], execution_time) }
|
111
|
+
include_examples "push spec" do
|
112
|
+
let(:merge_keys) { ["foo", "bar"] }
|
113
|
+
let(:times) { {
|
114
|
+
"sidekiq-merger:time:foo" => execution_time.to_i.to_s,
|
115
|
+
"sidekiq-merger:time:bar" => (execution_time + 1.hour).to_i.to_s,
|
116
|
+
} }
|
117
|
+
let(:unique_msgs_h) { {
|
118
|
+
"sidekiq-merger:unique_msg:foo" => ["[1,2,3]"],
|
119
|
+
"sidekiq-merger:unique_msg:bar" => ["[2,3,4]"],
|
120
|
+
} }
|
121
|
+
let(:msgs_h) { {
|
122
|
+
"sidekiq-merger:msg:foo" => ["[1,2,3]"],
|
123
|
+
"sidekiq-merger:msg:bar" => ["[2,3,4]"],
|
124
|
+
} }
|
106
125
|
end
|
107
126
|
end
|
108
127
|
end
|
@@ -110,10 +129,21 @@ describe Sidekiq::Merger::Redis do
|
|
110
129
|
describe "#delete" do
|
111
130
|
end
|
112
131
|
|
113
|
-
describe "#
|
132
|
+
describe "#merge_size" do
|
114
133
|
end
|
115
134
|
|
116
135
|
describe "#exists?" do
|
136
|
+
context "unique key exists" do
|
137
|
+
it "returns true" do
|
138
|
+
described_class.redis { |conn| conn.sadd("sidekiq-merger:unique_msg:foo", "\"test\"") }
|
139
|
+
expect(subject.exists?("foo", "test")).to eq true
|
140
|
+
end
|
141
|
+
end
|
142
|
+
context "unique key does not exists" do
|
143
|
+
it "returns false" do
|
144
|
+
expect(subject.exists?("foo", "test")).to eq false
|
145
|
+
end
|
146
|
+
end
|
117
147
|
end
|
118
148
|
|
119
149
|
describe "#all" do
|
@@ -131,7 +161,7 @@ describe Sidekiq::Merger::Redis do
|
|
131
161
|
subject.push("bar", [2, 3, 4], execution_time)
|
132
162
|
end
|
133
163
|
it "plucks all the args" do
|
134
|
-
expect(subject.pluck("bar")).to
|
164
|
+
expect(subject.pluck("bar")).to contain_exactly [1, 2, 3], [2, 3, 4]
|
135
165
|
end
|
136
166
|
end
|
137
167
|
|
data/spec/spec_helper.rb
CHANGED
@@ -54,13 +54,18 @@ RSpec.configure do |config|
|
|
54
54
|
Kernel.srand config.seed
|
55
55
|
|
56
56
|
config.before :suite do
|
57
|
-
Sidekiq.
|
57
|
+
Sidekiq::Testing.fake!
|
58
|
+
Sidekiq::Merger.logger = nil
|
59
|
+
Sidekiq.logger = nil
|
58
60
|
end
|
59
61
|
|
60
62
|
config.before :example do
|
61
|
-
Timecop.return
|
62
63
|
Sidekiq::Merger::Redis.redis do |conn|
|
63
64
|
conn.flushall
|
64
65
|
end
|
65
66
|
end
|
67
|
+
|
68
|
+
config.after :example do
|
69
|
+
Timecop.return
|
70
|
+
end
|
66
71
|
end
|
metadata
CHANGED
@@ -1,200 +1,207 @@
|
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dtaniwaki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.13'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.13'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- - "
|
17
|
+
- - ">="
|
32
18
|
- !ruby/object:Gem::Version
|
33
19
|
version: '10.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '13'
|
34
23
|
type: :development
|
35
24
|
prerelease: false
|
36
25
|
version_requirements: !ruby/object:Gem::Requirement
|
37
26
|
requirements:
|
38
|
-
- - "
|
27
|
+
- - ">="
|
39
28
|
- !ruby/object:Gem::Version
|
40
29
|
version: '10.0'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '13'
|
41
33
|
- !ruby/object:Gem::Dependency
|
42
34
|
name: rspec
|
43
35
|
requirement: !ruby/object:Gem::Requirement
|
44
36
|
requirements:
|
45
|
-
- - "
|
37
|
+
- - ">="
|
46
38
|
- !ruby/object:Gem::Version
|
47
39
|
version: '3.0'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '4'
|
48
43
|
type: :development
|
49
44
|
prerelease: false
|
50
45
|
version_requirements: !ruby/object:Gem::Requirement
|
51
46
|
requirements:
|
52
|
-
- - "
|
47
|
+
- - ">="
|
53
48
|
- !ruby/object:Gem::Version
|
54
49
|
version: '3.0'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '4'
|
55
53
|
- !ruby/object:Gem::Dependency
|
56
54
|
name: simplecov
|
57
55
|
requirement: !ruby/object:Gem::Requirement
|
58
56
|
requirements:
|
59
|
-
- - "
|
57
|
+
- - "~>"
|
60
58
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
59
|
+
version: '0.12'
|
62
60
|
type: :development
|
63
61
|
prerelease: false
|
64
62
|
version_requirements: !ruby/object:Gem::Requirement
|
65
63
|
requirements:
|
66
|
-
- - "
|
64
|
+
- - "~>"
|
67
65
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
66
|
+
version: '0.12'
|
69
67
|
- !ruby/object:Gem::Dependency
|
70
68
|
name: timecop
|
71
69
|
requirement: !ruby/object:Gem::Requirement
|
72
70
|
requirements:
|
73
|
-
- - "
|
71
|
+
- - "~>"
|
74
72
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
73
|
+
version: '0.8'
|
76
74
|
type: :development
|
77
75
|
prerelease: false
|
78
76
|
version_requirements: !ruby/object:Gem::Requirement
|
79
77
|
requirements:
|
80
|
-
- - "
|
78
|
+
- - "~>"
|
81
79
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
80
|
+
version: '0.8'
|
83
81
|
- !ruby/object:Gem::Dependency
|
84
82
|
name: rubocop
|
85
83
|
requirement: !ruby/object:Gem::Requirement
|
86
84
|
requirements:
|
87
|
-
- - "
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
85
|
+
- - "~>"
|
102
86
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
87
|
+
version: '0.47'
|
104
88
|
type: :development
|
105
89
|
prerelease: false
|
106
90
|
version_requirements: !ruby/object:Gem::Requirement
|
107
91
|
requirements:
|
108
|
-
- - "
|
92
|
+
- - "~>"
|
109
93
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
94
|
+
version: '0.47'
|
111
95
|
- !ruby/object:Gem::Dependency
|
112
96
|
name: coveralls
|
113
97
|
requirement: !ruby/object:Gem::Requirement
|
114
98
|
requirements:
|
115
|
-
- - "
|
99
|
+
- - "~>"
|
116
100
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
101
|
+
version: '0.8'
|
118
102
|
type: :development
|
119
103
|
prerelease: false
|
120
104
|
version_requirements: !ruby/object:Gem::Requirement
|
121
105
|
requirements:
|
122
|
-
- - "
|
106
|
+
- - "~>"
|
123
107
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
108
|
+
version: '0.8'
|
125
109
|
- !ruby/object:Gem::Dependency
|
126
110
|
name: sidekiq
|
127
111
|
requirement: !ruby/object:Gem::Requirement
|
128
112
|
requirements:
|
129
113
|
- - ">="
|
130
114
|
- !ruby/object:Gem::Version
|
131
|
-
version: 3.4
|
115
|
+
version: '3.4'
|
116
|
+
- - "<"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '5'
|
132
119
|
type: :runtime
|
133
120
|
prerelease: false
|
134
121
|
version_requirements: !ruby/object:Gem::Requirement
|
135
122
|
requirements:
|
136
123
|
- - ">="
|
137
124
|
- !ruby/object:Gem::Version
|
138
|
-
version: 3.4
|
125
|
+
version: '3.4'
|
126
|
+
- - "<"
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '5'
|
139
129
|
- !ruby/object:Gem::Dependency
|
140
130
|
name: concurrent-ruby
|
141
131
|
requirement: !ruby/object:Gem::Requirement
|
142
132
|
requirements:
|
143
|
-
- - "
|
133
|
+
- - "~>"
|
144
134
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
135
|
+
version: '1.0'
|
146
136
|
type: :runtime
|
147
137
|
prerelease: false
|
148
138
|
version_requirements: !ruby/object:Gem::Requirement
|
149
139
|
requirements:
|
150
|
-
- - "
|
140
|
+
- - "~>"
|
151
141
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
142
|
+
version: '1.0'
|
153
143
|
- !ruby/object:Gem::Dependency
|
154
144
|
name: activesupport
|
155
145
|
requirement: !ruby/object:Gem::Requirement
|
156
146
|
requirements:
|
157
147
|
- - ">="
|
158
148
|
- !ruby/object:Gem::Version
|
159
|
-
version: 3.2
|
149
|
+
version: '3.2'
|
150
|
+
- - "<"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '6'
|
160
153
|
type: :runtime
|
161
154
|
prerelease: false
|
162
155
|
version_requirements: !ruby/object:Gem::Requirement
|
163
156
|
requirements:
|
164
157
|
- - ">="
|
165
158
|
- !ruby/object:Gem::Version
|
166
|
-
version: 3.2
|
159
|
+
version: '3.2'
|
160
|
+
- - "<"
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '6'
|
167
163
|
description: Merge sidekiq jobs.
|
168
164
|
email:
|
169
165
|
- daisuketaniwaki@gmail.com
|
170
|
-
executables:
|
171
|
-
- console
|
172
|
-
- setup
|
166
|
+
executables: []
|
173
167
|
extensions: []
|
174
168
|
extra_rdoc_files: []
|
175
169
|
files:
|
170
|
+
- ".dockerignore"
|
171
|
+
- ".gemrelease"
|
176
172
|
- ".gitignore"
|
177
173
|
- ".rspec"
|
178
174
|
- ".rubocop.yml"
|
179
175
|
- ".travis.yml"
|
176
|
+
- Dockerfile
|
180
177
|
- Gemfile
|
181
178
|
- LICENSE
|
182
179
|
- README.md
|
183
180
|
- Rakefile
|
184
|
-
-
|
185
|
-
-
|
181
|
+
- app/Gemfile
|
182
|
+
- app/app.rb
|
183
|
+
- app/config.ru
|
184
|
+
- app/sidekiq.rb
|
185
|
+
- app/some_worker.rb
|
186
|
+
- app/unique_worker.rb
|
187
|
+
- app/views/index.erb
|
188
|
+
- docker-compose-common.yml
|
189
|
+
- docker-compose.yml
|
186
190
|
- lib/sidekiq-merger.rb
|
187
191
|
- lib/sidekiq/merger.rb
|
188
|
-
- lib/sidekiq/merger/batch.rb
|
189
192
|
- lib/sidekiq/merger/config.rb
|
190
193
|
- lib/sidekiq/merger/flusher.rb
|
191
194
|
- lib/sidekiq/merger/logging_observer.rb
|
195
|
+
- lib/sidekiq/merger/merge.rb
|
192
196
|
- lib/sidekiq/merger/middleware.rb
|
193
197
|
- lib/sidekiq/merger/redis.rb
|
194
198
|
- lib/sidekiq/merger/version.rb
|
199
|
+
- lib/sidekiq/merger/views/index.erb
|
200
|
+
- lib/sidekiq/merger/web.rb
|
201
|
+
- misc/web_ui.png
|
195
202
|
- sidekiq-merger.gemspec
|
196
|
-
- spec/sidekiq/merger/batch_spec.rb
|
197
203
|
- spec/sidekiq/merger/flusher_spec.rb
|
204
|
+
- spec/sidekiq/merger/merge_spec.rb
|
198
205
|
- spec/sidekiq/merger/middleware_spec.rb
|
199
206
|
- spec/sidekiq/merger/redis_spec.rb
|
200
207
|
- spec/sidekiq/merger_spec.rb
|
@@ -228,8 +235,8 @@ signing_key:
|
|
228
235
|
specification_version: 4
|
229
236
|
summary: Sidekiq merger plugin
|
230
237
|
test_files:
|
231
|
-
- spec/sidekiq/merger/batch_spec.rb
|
232
238
|
- spec/sidekiq/merger/flusher_spec.rb
|
239
|
+
- spec/sidekiq/merger/merge_spec.rb
|
233
240
|
- spec/sidekiq/merger/middleware_spec.rb
|
234
241
|
- spec/sidekiq/merger/redis_spec.rb
|
235
242
|
- spec/sidekiq/merger_spec.rb
|