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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d3bb1c894e1ca2de1e7af0ddd3caa4f811714b26d3d4c2167d29f244912c0d8
4
- data.tar.gz: ea3fb4defd1bafe75f0f19027d731f20864ff677856bab6bee24f5f12a3a6b33
3
+ metadata.gz: 89f9e9d257f26f356b1b326e85cd7daf6715663c68dc25aed874fa59d9b3e19d
4
+ data.tar.gz: cd2d9727d30f4fd6b1517f99e37da5df95fa70685f1ec7122607c7a83661d5d3
5
5
  SHA512:
6
- metadata.gz: 3094d1293de5d27a9400d2dabe1c040f0d897f61d1f7e2920590e00e117f7d305e640f85f87bb318b1b4da9a925a5f8748ae390b2db506dc36d119f1e31ab685
7
- data.tar.gz: 03d6d2bf6e953233c5e71ce2d433138333ce9c78253afdf53020b4eb4e75a12a687b394be49c339d152e1bda20d852e881a51fd7483c3a50bc7d5a850a855d4a
6
+ metadata.gz: d6ce5e52ac8304eb3925d55808d2fc307ca1a63e07fd3531553528a08cd4b07403bf5a999aa66b1db605b3190acf88f24607cc47ea7f6af1aeeab66c7145ae9f
7
+ data.tar.gz: cb53a55dcfe634d888c8944578fc848133841bd29ab2e42d2ce16b3a68be0231ab01bb5bf698af42f92ebd02f582fe38c206eef38ffe933d635629e65a594c95
@@ -3,5 +3,5 @@
3
3
  # Top level module for BozosBuckets
4
4
  module BozosBuckets
5
5
  # Version constant
6
- VERSION = '0.0.1'
6
+ VERSION = '0.0.2'
7
7
  end
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 :current_token_count, :refill_rate, :max_token_count, :last_refilled
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
- return true
39
+ true
41
40
  else
42
- return false
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.1
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-15 00:00:00.000000000 Z
11
+ date: 2021-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
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