progressrus 1.0.3 → 1.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 +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/lib/progressrus/store/redis.rb +15 -9
- data/lib/progressrus/version.rb +1 -1
- data/progressrus.gemspec +2 -2
- data/test/progressrus_test.rb +1 -2
- data/test/store/redis_test.rb +21 -21
- data/test/test_helper.rb +1 -1
- metadata +7 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f66da2e66134a7ca0b4db7d198c8910e9bec348c73d40e969e053a41f282edc
|
4
|
+
data.tar.gz: bcda55d9cd6959911c81456943f183cd28525d54450d1b4537470ff5ad718c09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1609c053c0e4acc20fa8ddc50c36e0050fa3d19ed28568911e67647159f09f836a3e390804aeeb90e3e769cea4c775e663b2b32b11b805559a05ba0a56fe5a10
|
7
|
+
data.tar.gz: 880783ea27e8d89684a5d3fb6541daf0de3eba418191c9d192c94882b07f08a5d0fd283ee0032e1eeeb4235dd7eef1f37cc0875437b2acba406f7624ebc80cfb
|
data/.github/workflows/ci.yml
CHANGED
@@ -17,9 +17,11 @@ class Progressrus
|
|
17
17
|
if outdated?(progress) || force
|
18
18
|
key_for_scope = key(progress.scope)
|
19
19
|
|
20
|
-
redis.
|
21
|
-
|
22
|
-
|
20
|
+
redis.with do |client|
|
21
|
+
client.pipelined do |pipeline|
|
22
|
+
pipeline.hset(key_for_scope, progress.id, progress.to_serializeable.to_json)
|
23
|
+
pipeline.expireat(key_for_scope, expires_at.to_i) if expires_at
|
24
|
+
end
|
23
25
|
end
|
24
26
|
|
25
27
|
@persisted_ats[progress.scope][progress.id] = now
|
@@ -29,7 +31,9 @@ class Progressrus
|
|
29
31
|
end
|
30
32
|
|
31
33
|
def scope(scope)
|
32
|
-
scope = redis.
|
34
|
+
scope = redis.with do |client|
|
35
|
+
client.hgetall(key(scope))
|
36
|
+
end
|
33
37
|
scope.each_pair { |id, value|
|
34
38
|
scope[id] = Progressrus.new(**deserialize(value))
|
35
39
|
}
|
@@ -38,7 +42,7 @@ class Progressrus
|
|
38
42
|
end
|
39
43
|
|
40
44
|
def find(scope, id)
|
41
|
-
value = redis.hget(key(scope), id)
|
45
|
+
value = redis.with { |client| client.hget(key(scope), id) }
|
42
46
|
return unless value
|
43
47
|
|
44
48
|
Progressrus.new(**deserialize(value))
|
@@ -47,10 +51,12 @@ class Progressrus
|
|
47
51
|
end
|
48
52
|
|
49
53
|
def flush(scope, id = nil)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
+
redis.with do |client|
|
55
|
+
if id
|
56
|
+
client.hdel(key(scope), id)
|
57
|
+
else
|
58
|
+
client.del(key(scope))
|
59
|
+
end
|
54
60
|
end
|
55
61
|
rescue *BACKEND_EXCEPTIONS => e
|
56
62
|
raise Progressrus::Store::BackendError.new(e)
|
data/lib/progressrus/version.rb
CHANGED
data/progressrus.gemspec
CHANGED
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "redis", ">=
|
21
|
+
spec.add_dependency "redis", ">= 4.7.0"
|
22
22
|
spec.add_dependency "ruby-progressbar", "~> 1.0"
|
23
23
|
|
24
24
|
spec.add_development_dependency "rake"
|
25
|
-
spec.add_development_dependency "mocha", "~>
|
25
|
+
spec.add_development_dependency "mocha", "~> 2.7"
|
26
26
|
spec.add_development_dependency "pry"
|
27
27
|
spec.add_development_dependency "byebug"
|
28
28
|
spec.add_development_dependency "pry-byebug"
|
data/test/progressrus_test.rb
CHANGED
@@ -247,8 +247,7 @@ class ProgressrusTest < Minitest::Test
|
|
247
247
|
end
|
248
248
|
|
249
249
|
def test_tick_and_complete_dont_raise_if_store_is_unavailable
|
250
|
-
|
251
|
-
store.redis.expects(:hset).at_least_once.raises(::Redis::BaseError)
|
250
|
+
Redis::PipelinedConnection.any_instance.expects(:hset).at_least_once.raises(::Redis::BaseError)
|
252
251
|
@progress.tick
|
253
252
|
@progress.complete
|
254
253
|
end
|
data/test/store/redis_test.rb
CHANGED
@@ -7,7 +7,7 @@ class RedisStoreTest < Minitest::Test
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
def setup
|
10
|
-
|
10
|
+
@scope = ["walrus", "1234"]
|
11
11
|
@progress = Progressrus.new(
|
12
12
|
scope: @scope,
|
13
13
|
id: "oemg",
|
@@ -15,7 +15,7 @@ class RedisStoreTest < Minitest::Test
|
|
15
15
|
name: "oemg-name"
|
16
16
|
)
|
17
17
|
|
18
|
-
|
18
|
+
@another_progress = Progressrus.new(
|
19
19
|
scope: @scope,
|
20
20
|
id: "oemg-two",
|
21
21
|
total: 100,
|
@@ -38,16 +38,16 @@ class RedisStoreTest < Minitest::Test
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_persist_should_set_key_value_if_outdated
|
41
|
-
|
41
|
+
@store.persist(@progress)
|
42
42
|
|
43
|
-
|
43
|
+
assert_equal 'oemg', @store.find(['walrus', '1234'], 'oemg').id
|
44
44
|
end
|
45
45
|
|
46
46
|
def test_persist_should_not_set_key_value_if_not_outdated
|
47
|
-
|
47
|
+
Redis::PipelinedConnection.any_instance.expects(:hset).once
|
48
48
|
|
49
|
-
|
50
|
-
|
49
|
+
@store.persist(@progress)
|
50
|
+
@store.persist(@progress)
|
51
51
|
end
|
52
52
|
|
53
53
|
def test_scope_should_return_progressruses_indexed_by_id
|
@@ -62,7 +62,7 @@ class RedisStoreTest < Minitest::Test
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def test_scope_should_return_an_empty_hash_if_nothing_is_found
|
65
|
-
|
65
|
+
assert_equal({}, @store.scope(@scope))
|
66
66
|
end
|
67
67
|
|
68
68
|
def test_find_should_return_a_single_progressrus_for_scope_and_id
|
@@ -73,41 +73,41 @@ class RedisStoreTest < Minitest::Test
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def test_find_should_return_nil_if_nothing_is_found
|
76
|
-
|
76
|
+
assert_nil @store.find(@scope, 'oemg')
|
77
77
|
end
|
78
78
|
|
79
79
|
def test_flush_should_delete_by_scope
|
80
|
-
|
81
|
-
|
80
|
+
@store.persist(@progress)
|
81
|
+
@store.persist(@another_progress)
|
82
82
|
|
83
|
-
|
83
|
+
@store.flush(@scope)
|
84
84
|
|
85
|
-
|
85
|
+
assert_equal({}, @store.scope(@scope))
|
86
86
|
end
|
87
87
|
|
88
88
|
def test_flush_should_delete_by_scope_and_id
|
89
|
-
|
90
|
-
|
89
|
+
@store.persist(@progress)
|
90
|
+
@store.persist(@another_progress)
|
91
91
|
|
92
|
-
|
92
|
+
@store.flush(@scope, 'oemg')
|
93
93
|
|
94
|
-
|
95
|
-
|
94
|
+
assert_nil @store.find(@scope, 'oemg')
|
95
|
+
assert @store.find(@scope, 'oemg-two')
|
96
96
|
end
|
97
97
|
|
98
98
|
def test_initializes_name_to_redis
|
99
|
-
|
99
|
+
assert_equal :redis, @store.name
|
100
100
|
end
|
101
101
|
|
102
102
|
def test_persist_should_not_write_by_default
|
103
|
-
|
103
|
+
Redis::PipelinedConnection.any_instance.expects(:hset).once
|
104
104
|
|
105
105
|
@store.persist(@progress)
|
106
106
|
@store.persist(@progress)
|
107
107
|
end
|
108
108
|
|
109
109
|
def test_persist_should_write_if_forced
|
110
|
-
|
110
|
+
Redis::PipelinedConnection.any_instance.expects(:hset).twice
|
111
111
|
|
112
112
|
@store.persist(@progress)
|
113
113
|
@store.persist(@progress, force: true)
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: progressrus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Eskildsen
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-03-24 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: redis
|
@@ -16,14 +15,14 @@ dependencies:
|
|
16
15
|
requirements:
|
17
16
|
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
18
|
+
version: 4.7.0
|
20
19
|
type: :runtime
|
21
20
|
prerelease: false
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
23
22
|
requirements:
|
24
23
|
- - ">="
|
25
24
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
25
|
+
version: 4.7.0
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
27
|
name: ruby-progressbar
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +57,14 @@ dependencies:
|
|
58
57
|
requirements:
|
59
58
|
- - "~>"
|
60
59
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
60
|
+
version: '2.7'
|
62
61
|
type: :development
|
63
62
|
prerelease: false
|
64
63
|
version_requirements: !ruby/object:Gem::Requirement
|
65
64
|
requirements:
|
66
65
|
- - "~>"
|
67
66
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
67
|
+
version: '2.7'
|
69
68
|
- !ruby/object:Gem::Dependency
|
70
69
|
name: pry
|
71
70
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,7 +154,6 @@ homepage: https://github.com/Sirupsen/progressrus
|
|
155
154
|
licenses:
|
156
155
|
- MIT
|
157
156
|
metadata: {}
|
158
|
-
post_install_message:
|
159
157
|
rdoc_options: []
|
160
158
|
require_paths:
|
161
159
|
- lib
|
@@ -170,8 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
168
|
- !ruby/object:Gem::Version
|
171
169
|
version: '0'
|
172
170
|
requirements: []
|
173
|
-
rubygems_version: 3.
|
174
|
-
signing_key:
|
171
|
+
rubygems_version: 3.6.2
|
175
172
|
specification_version: 4
|
176
173
|
summary: Monitor the progress of remote, long-running jobs.
|
177
174
|
test_files:
|