heavy_keeper 0.1.3 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8410f712a9a520ed622ac2eb4c0daedbc815e36313d0cf3cdcaadf70d516a5d
4
- data.tar.gz: c70655d1cecfb02030c459bdf7075227c2b631abb501c5362057341e85d4adcc
3
+ metadata.gz: 0fa845ff130abdbfdb259da169bb28d5bbbe4950ff03a9c82e7d4d3cf161df70
4
+ data.tar.gz: ed07be9b64ce60c3b02273c33a1c7b74d567a6fc5faf06679b52280f65a3c4fe
5
5
  SHA512:
6
- metadata.gz: 1a787943e9f72e611763605d13e26c80efdebe331d3063f735d2cb3556afe9f8d225e91a8543cc415bd05a8520765c52b03a5939657dbbb5e6276ce2c7875f7f
7
- data.tar.gz: 0fc7cd55e2a9c5414a66717088f6de542ba17eb6c5f8fbd57afc88f9cc3ebf3295c5af301e31c47a98223259e3859969c36c0a2c6960ddfbe57fd877e3443790
6
+ metadata.gz: be4e3c50a389b55371466f65ffa69cec2d14d431b274ed867bf7f503df0a28b03f6872acfa8d6b4eb53d71939ea4c2d7a6225b078e1399891d72b2ed59aac0d8
7
+ data.tar.gz: 510d531f4dcc4d0f350e7a01eb05f7c36c2f24b0ab252de3c0463b1238496cf9e40a54bd2ce4d744c2c9358365560c15bdc7e7ee65601b7f5d3d56a3722ef7a6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.1.4] - 2022-11-19
2
+
3
+ - Support redis-rb 5.x
4
+
1
5
  ## [0.1.3] - 2022-07-01
2
6
  - Actually fix key typos with specs
3
7
 
data/Gemfile.redis.4 ADDED
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in heavy_keeper.gemspec
6
+ gemspec
7
+
8
+ gem 'rubocop', require: false
9
+
10
+ gem 'rake', '~> 13.0'
11
+ gem 'redis', '~> 4.0'
12
+
13
+ group :test do
14
+ gem 'mock_redis'
15
+ gem 'rspec'
16
+ gem 'pry-byebug'
17
+ end
data/Gemfile.redis.5 ADDED
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in heavy_keeper.gemspec
6
+ gemspec
7
+
8
+ gem 'rubocop', require: false
9
+
10
+ gem 'rake', '~> 13.0'
11
+ gem 'redis', '~> 5.0'
12
+
13
+ group :test do
14
+ gem 'mock_redis'
15
+ gem 'rspec'
16
+ gem 'pry-byebug'
17
+ end
@@ -26,7 +26,7 @@ module HeavyKeeper
26
26
 
27
27
  def min(key)
28
28
  item = storage.zrangebyscore(sorted_set_key(key), - Float::INFINITY, Float::INFINITY, limit: [0, 1]).first
29
- count(key, item)
29
+ item ? count(key, item) : 0
30
30
  end
31
31
 
32
32
  def exist?(key, item)
@@ -38,6 +38,10 @@ module HeavyKeeper
38
38
  # @return OK on success, otherwise raise error
39
39
  def reserve(key, options)
40
40
  options = validate(options)
41
+ # We need to use Decimal when validating to accept integer
42
+ # number. However, we need to convert to float when save to Redis
43
+ # because redis-rb 5 don't support Decimal type
44
+ options[:decay] = options[:decay].to_f
41
45
 
42
46
  storage.mapped_hmset(metadata_key(key), options)
43
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HeavyKeeper
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.4'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heavy_keeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hieu Nguyen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-07-01 00:00:00.000000000 Z
12
+ date: 2022-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dry-configurable
@@ -43,16 +43,16 @@ dependencies:
43
43
  name: redis
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '4'
48
+ version: '0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '4'
55
+ version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: xxhash
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -77,12 +77,12 @@ files:
77
77
  - ".rubocop.yml"
78
78
  - CHANGELOG.md
79
79
  - Gemfile
80
- - Gemfile.lock
80
+ - Gemfile.redis.4
81
+ - Gemfile.redis.5
81
82
  - README.md
82
83
  - Rakefile
83
84
  - bin/console
84
85
  - bin/setup
85
- - heavy_keeper.gemspec
86
86
  - lib/heavy_keeper.rb
87
87
  - lib/heavy_keeper/bucket.rb
88
88
  - lib/heavy_keeper/min_heap.rb
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  requirements: []
114
- rubygems_version: 3.2.28
114
+ rubygems_version: 3.3.7
115
115
  signing_key:
116
116
  specification_version: 4
117
117
  summary: Gem which implements HeavyKeeper algorithm
data/Gemfile.lock DELETED
@@ -1,103 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- heavy_keeper (0.1.3)
5
- dry-configurable (>= 0.13.0)
6
- dry-schema (~> 1)
7
- redis (~> 4)
8
- xxhash (~> 0.4.0)
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- ast (2.4.2)
14
- byebug (11.1.3)
15
- coderay (1.1.3)
16
- concurrent-ruby (1.1.10)
17
- diff-lcs (1.5.0)
18
- dry-configurable (0.15.0)
19
- concurrent-ruby (~> 1.0)
20
- dry-core (~> 0.6)
21
- dry-container (0.9.0)
22
- concurrent-ruby (~> 1.0)
23
- dry-configurable (~> 0.13, >= 0.13.0)
24
- dry-core (0.7.1)
25
- concurrent-ruby (~> 1.0)
26
- dry-inflector (0.2.1)
27
- dry-initializer (3.1.1)
28
- dry-logic (1.2.0)
29
- concurrent-ruby (~> 1.0)
30
- dry-core (~> 0.5, >= 0.5)
31
- dry-schema (1.9.1)
32
- concurrent-ruby (~> 1.0)
33
- dry-configurable (~> 0.13, >= 0.13.0)
34
- dry-core (~> 0.5, >= 0.5)
35
- dry-initializer (~> 3.0)
36
- dry-logic (~> 1.0)
37
- dry-types (~> 1.5)
38
- dry-types (1.5.1)
39
- concurrent-ruby (~> 1.0)
40
- dry-container (~> 0.3)
41
- dry-core (~> 0.5, >= 0.5)
42
- dry-inflector (~> 0.1, >= 0.1.2)
43
- dry-logic (~> 1.0, >= 1.0.2)
44
- method_source (1.0.0)
45
- mock_redis (0.31.0)
46
- ruby2_keywords
47
- parallel (1.22.1)
48
- parser (3.1.2.0)
49
- ast (~> 2.4.1)
50
- pry (0.13.1)
51
- coderay (~> 1.1)
52
- method_source (~> 1.0)
53
- pry-byebug (3.9.0)
54
- byebug (~> 11.0)
55
- pry (~> 0.13.0)
56
- rainbow (3.1.1)
57
- rake (13.0.6)
58
- redis (4.7.0)
59
- regexp_parser (2.4.0)
60
- rexml (3.2.5)
61
- rspec (3.11.0)
62
- rspec-core (~> 3.11.0)
63
- rspec-expectations (~> 3.11.0)
64
- rspec-mocks (~> 3.11.0)
65
- rspec-core (3.11.0)
66
- rspec-support (~> 3.11.0)
67
- rspec-expectations (3.11.0)
68
- diff-lcs (>= 1.2.0, < 2.0)
69
- rspec-support (~> 3.11.0)
70
- rspec-mocks (3.11.1)
71
- diff-lcs (>= 1.2.0, < 2.0)
72
- rspec-support (~> 3.11.0)
73
- rspec-support (3.11.0)
74
- rubocop (1.29.1)
75
- parallel (~> 1.10)
76
- parser (>= 3.1.0.0)
77
- rainbow (>= 2.2.2, < 4.0)
78
- regexp_parser (>= 1.8, < 3.0)
79
- rexml (>= 3.2.5, < 4.0)
80
- rubocop-ast (>= 1.17.0, < 2.0)
81
- ruby-progressbar (~> 1.7)
82
- unicode-display_width (>= 1.4.0, < 3.0)
83
- rubocop-ast (1.18.0)
84
- parser (>= 3.1.1.0)
85
- ruby-progressbar (1.11.0)
86
- ruby2_keywords (0.0.5)
87
- unicode-display_width (2.1.0)
88
- xxhash (0.4.0)
89
-
90
- PLATFORMS
91
- x86_64-darwin-19
92
- x86_64-linux
93
-
94
- DEPENDENCIES
95
- heavy_keeper!
96
- mock_redis
97
- pry-byebug
98
- rake (~> 13.0)
99
- rspec
100
- rubocop
101
-
102
- BUNDLED WITH
103
- 2.2.32
data/heavy_keeper.gemspec DELETED
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'lib/heavy_keeper/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'heavy_keeper'
7
- spec.version = HeavyKeeper::VERSION
8
- spec.authors = ['Hieu Nguyen', 'Kenneth Teh']
9
-
10
- spec.summary = 'Gem which implements HeavyKeeper algorithm'
11
- spec.homepage = 'https://github.com/Kaligo/heavy_keeper'
12
- spec.required_ruby_version = '>= 2.7.0'
13
-
14
- spec.metadata['homepage_uri'] = spec.homepage
15
- spec.metadata['source_code_uri'] = 'https://github.com/Kaligo/heavy_keeper'
16
- spec.metadata['changelog_uri'] = 'https://github.com/Kaligo/heavy_keeper/blob/master/CHANGELOG.md'
17
-
18
- # Specify which files should be added to the gem when it is released.
19
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
21
- `git ls-files -z`.split("\x0").reject do |f|
22
- (f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
23
- end
24
- end
25
- spec.bindir = 'exe'
26
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
27
- spec.require_paths = ['lib']
28
-
29
- spec.add_dependency 'dry-configurable', '>= 0.13.0'
30
- spec.add_dependency 'dry-schema', '~> 1'
31
- spec.add_dependency 'redis', '~> 4'
32
- spec.add_dependency 'xxhash', '~> 0.4.0'
33
-
34
- spec.metadata['rubygems_mfa_required'] = 'true'
35
- end