bozos_buckets 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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