bozos_buckets 0.0.1 → 0.0.2
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/lib/bozos_buckets/version.rb +1 -1
- data/lib/bozos_buckets.rb +16 -6
- metadata +31 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89f9e9d257f26f356b1b326e85cd7daf6715663c68dc25aed874fa59d9b3e19d
|
4
|
+
data.tar.gz: cd2d9727d30f4fd6b1517f99e37da5df95fa70685f1ec7122607c7a83661d5d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6ce5e52ac8304eb3925d55808d2fc307ca1a63e07fd3531553528a08cd4b07403bf5a999aa66b1db605b3190acf88f24607cc47ea7f6af1aeeab66c7145ae9f
|
7
|
+
data.tar.gz: cb53a55dcfe634d888c8944578fc848133841bd29ab2e42d2ce16b3a68be0231ab01bb5bf698af42f92ebd02f582fe38c206eef38ffe933d635629e65a594c95
|
data/lib/bozos_buckets.rb
CHANGED
@@ -3,10 +3,9 @@
|
|
3
3
|
require_relative './bozos_buckets/version'
|
4
4
|
|
5
5
|
module BozosBuckets
|
6
|
-
|
7
6
|
# Class representing a token bucket
|
8
7
|
class Bucket
|
9
|
-
attr_reader :
|
8
|
+
attr_reader :refill_rate, :max_token_count, :last_refilled
|
10
9
|
|
11
10
|
# Constructs a Bucket instance
|
12
11
|
#
|
@@ -25,7 +24,7 @@ module BozosBuckets
|
|
25
24
|
reset_last_refilled
|
26
25
|
end
|
27
26
|
|
28
|
-
# Attempt to use tokens from the bucket. If there are sufficient
|
27
|
+
# Attempt to use tokens from the bucket. If there are sufficient
|
29
28
|
# tokens, @current_token_count is decremented by the `count` and method
|
30
29
|
# returns `true`. If there are not sufficient tokens, method returns
|
31
30
|
# false without changing the @current_token_count
|
@@ -37,9 +36,9 @@ module BozosBuckets
|
|
37
36
|
|
38
37
|
if (@current_token_count - count) >= 0
|
39
38
|
@current_token_count -= count
|
40
|
-
|
39
|
+
true
|
41
40
|
else
|
42
|
-
|
41
|
+
false
|
43
42
|
end
|
44
43
|
end
|
45
44
|
|
@@ -57,9 +56,20 @@ module BozosBuckets
|
|
57
56
|
@current_token_count = [@current_token_count + tokens_to_add, max_token_count].min
|
58
57
|
end
|
59
58
|
|
59
|
+
# Returns the current count of available tokens, after refilling the bucket
|
60
|
+
# based on elapsed time. This method replaces the attr_reader to prevent
|
61
|
+
# clients from getting a stale value by reading the attr directly without
|
62
|
+
# refilling the bucket first
|
63
|
+
#
|
64
|
+
# @return [Integer] the current_token_count after refilling the bucket
|
65
|
+
def current_token_count
|
66
|
+
refill_bucket
|
67
|
+
@current_token_count
|
68
|
+
end
|
69
|
+
|
60
70
|
private
|
61
71
|
|
62
|
-
# Resets the last_refilled timestamp to the current time. Called by
|
72
|
+
# Resets the last_refilled timestamp to the current time. Called by
|
63
73
|
# {#refill_bucket} after calculating elapsed time
|
64
74
|
#
|
65
75
|
# @return [Integer] last used timestamp in Unix epoch format. Should
|
metadata
CHANGED
@@ -1,17 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bozos_buckets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Glover
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '12.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '12.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rubocop
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - ">="
|
@@ -24,6 +38,20 @@ dependencies:
|
|
24
38
|
- - ">="
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: yard
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|