pecorino 0.1.0 → 0.1.1

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: a78723f311ad1a8b214716714e1b0ba5cf51e5860811612eaa931430cd7008ba
4
- data.tar.gz: 89489e7423c8196e5644ee6166b4cd7520c54ed1bfefa627937c4c26f8b934fe
3
+ metadata.gz: a58274f909ba72f93ce478129cd8cfb08893be9a6691a7a892b5e3be455fdd59
4
+ data.tar.gz: 9bd363bc28d2095a3394abc36f0291c21b7b10e8652b8238243167a262f44740
5
5
  SHA512:
6
- metadata.gz: 36f3d6f7dfe4dc9ed21ba46fc2f79f2899cc38538c9220aacc9c6a9ca35d1f83de4d46f957ce1df782cc6bc19f5d531ca193398d6b8e2fe9bad3548dc43d88a9
7
- data.tar.gz: 49f2acdb92bd5077a59eb47dafd335ec11ffb7639d5316d1fca39d851fad5c04460bf2054f5bc1856e41b12bca06b53207548023bf87a5900701bafd0df975e7
6
+ metadata.gz: b9fbe0ec9ca780eb2e546b0f47bfcb0b4c579ac2f688dc59b7ebbcad39ebba875759fe62982c80b8f04e39553df6d1a64f7e8e9300d8f32b6d5f57c7c8a68405
7
+ data.tar.gz: c909b8bb23045ef42eca9346f8956744aeb2f97d5c5446f62f5b16c808b56d99abbc291e5a40d2de31fa2027b4ed789567d51af98e44a23b4c0c2062cf7a71cd
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ Gemfile.lock
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.2.2
data/README.md CHANGED
@@ -4,6 +4,8 @@ Pecorino is a rate limiter based on the concept of leaky buckets. It uses your D
4
4
 
5
5
  Pecorino is designed to integrate seamlessly into any Rails application using a Postgres database (at the moment there is no MySQL support, we would be delighted if you could add it).
6
6
 
7
+ If you would like to know more about the leaky bucket algorithm: the [Wikipedia article](https://en.wikipedia.org/wiki/Leaky_bucket) is a great starting point.
8
+
7
9
  ## Installation
8
10
 
9
11
  Add this line to your application's Gemfile:
@@ -58,7 +60,7 @@ Sometimes you don't want to use a throttle, but you want to track the amount add
58
60
 
59
61
 
60
62
  ```ruby
61
- b = Pecorino::LeakyBucket.new(key: "some_b", capacity: 100, leak_rate: 5)
63
+ b = Pecorino::LeakyBucket.new(key: "some_b", capacity: 100, leak_rate: 1)
62
64
  b.fillup(2) #=> Pecorino::LeakyBucket::State(full?: false, level: 2.0)
63
65
  sleep 0.2
64
66
  b.state #=> Pecorino::LeakyBucket::State(full?: false, level: 1.8)
@@ -72,15 +74,24 @@ We recommend running the following bit of code every couple of hours (via cron o
72
74
 
73
75
  Pecorino.prune!
74
76
 
77
+ ## Using unlogged tables for reduced replication load
78
+
79
+ Throttles and leaky buckets are transient resources. If you are using Postgres replication, it might be prudent to set the Pecorino tables to `UNLOGGED` which will exclude them from replication - and save you bandwidth and storage on your RR. To do so, add the following statements to your migration:
80
+
81
+ ```ruby
82
+ ActiveRecord::Base.connection.execute("ALTER TABLE pecorino_leaky_buckets SET UNLOGGED")
83
+ ActiveRecord::Base.connection.execute("ALTER TABLE pecorino_blocks SET UNLOGGED")
84
+ ```
85
+
75
86
  ## Development
76
87
 
77
- After checking out the repo, run `bundle. Then, run `rake test` to run the tests.
88
+ After checking out the repo, run `bundle`. Then, run `rake test` to run the tests.
78
89
 
79
90
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
80
91
 
81
92
  ## Contributing
82
93
 
83
- Bug reports and pull requests are welcome on GitHub at https://github.com/julik/pecorino. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/julik/pecorino/blob/main/CODE_OF_CONDUCT.md).
94
+ Bug reports and pull requests are welcome on GitHub at https://github.com/cheddar-me/pecorino. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/cheddar-me/pecorino/blob/main/CODE_OF_CONDUCT.md).
84
95
 
85
96
  ## License
86
97
 
@@ -88,4 +99,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
88
99
 
89
100
  ## Code of Conduct
90
101
 
91
- Everyone interacting in the Pecorino project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/julik/pecorino/blob/main/CODE_OF_CONDUCT.md).
102
+ Everyone interacting in the Pecorino project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/cheddar-me/pecorino/blob/main/CODE_OF_CONDUCT.md).
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pecorino
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pecorino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-01 00:00:00.000000000 Z
11
+ date: 2023-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -80,14 +80,13 @@ files:
80
80
  - CHANGELOG.md
81
81
  - CODE_OF_CONDUCT.md
82
82
  - Gemfile
83
- - Gemfile.lock
84
83
  - LICENSE.txt
85
84
  - README.md
86
85
  - Rakefile
87
86
  - lib/pecorino.rb
88
87
  - lib/pecorino/install_generator.rb
89
88
  - lib/pecorino/leaky_bucket.rb
90
- - lib/pecorino/migrations/create_raclette_tables.rb.erb
89
+ - lib/pecorino/migrations/create_pecorino_tables.rb.erb
91
90
  - lib/pecorino/railtie.rb
92
91
  - lib/pecorino/throttle.rb
93
92
  - lib/pecorino/version.rb
@@ -114,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
113
  - !ruby/object:Gem::Version
115
114
  version: '0'
116
115
  requirements: []
117
- rubygems_version: 3.3.3
116
+ rubygems_version: 3.4.10
118
117
  signing_key:
119
118
  specification_version: 4
120
119
  summary: Database-based rate limiter using leaky buckets
data/Gemfile.lock DELETED
@@ -1,156 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- pecorino (0.1.0)
5
- activerecord (~> 7)
6
- pg
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actioncable (7.0.4)
12
- actionpack (= 7.0.4)
13
- activesupport (= 7.0.4)
14
- nio4r (~> 2.0)
15
- websocket-driver (>= 0.6.1)
16
- actionmailbox (7.0.4)
17
- actionpack (= 7.0.4)
18
- activejob (= 7.0.4)
19
- activerecord (= 7.0.4)
20
- activestorage (= 7.0.4)
21
- activesupport (= 7.0.4)
22
- mail (>= 2.7.1)
23
- net-imap
24
- net-pop
25
- net-smtp
26
- actionmailer (7.0.4)
27
- actionpack (= 7.0.4)
28
- actionview (= 7.0.4)
29
- activejob (= 7.0.4)
30
- activesupport (= 7.0.4)
31
- mail (~> 2.5, >= 2.5.4)
32
- net-imap
33
- net-pop
34
- net-smtp
35
- rails-dom-testing (~> 2.0)
36
- actionpack (7.0.4)
37
- actionview (= 7.0.4)
38
- activesupport (= 7.0.4)
39
- rack (~> 2.0, >= 2.2.0)
40
- rack-test (>= 0.6.3)
41
- rails-dom-testing (~> 2.0)
42
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
43
- actiontext (7.0.4)
44
- actionpack (= 7.0.4)
45
- activerecord (= 7.0.4)
46
- activestorage (= 7.0.4)
47
- activesupport (= 7.0.4)
48
- globalid (>= 0.6.0)
49
- nokogiri (>= 1.8.5)
50
- actionview (7.0.4)
51
- activesupport (= 7.0.4)
52
- builder (~> 3.1)
53
- erubi (~> 1.4)
54
- rails-dom-testing (~> 2.0)
55
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
56
- activejob (7.0.4)
57
- activesupport (= 7.0.4)
58
- globalid (>= 0.3.6)
59
- activemodel (7.0.4)
60
- activesupport (= 7.0.4)
61
- activerecord (7.0.4)
62
- activemodel (= 7.0.4)
63
- activesupport (= 7.0.4)
64
- activestorage (7.0.4)
65
- actionpack (= 7.0.4)
66
- activejob (= 7.0.4)
67
- activerecord (= 7.0.4)
68
- activesupport (= 7.0.4)
69
- marcel (~> 1.0)
70
- mini_mime (>= 1.1.0)
71
- activesupport (7.0.4)
72
- concurrent-ruby (~> 1.0, >= 1.0.2)
73
- i18n (>= 1.6, < 2)
74
- minitest (>= 5.1)
75
- tzinfo (~> 2.0)
76
- builder (3.2.4)
77
- concurrent-ruby (1.1.10)
78
- crass (1.0.6)
79
- erubi (1.11.0)
80
- globalid (1.0.0)
81
- activesupport (>= 5.0)
82
- i18n (1.12.0)
83
- concurrent-ruby (~> 1.0)
84
- loofah (2.19.0)
85
- crass (~> 1.0.2)
86
- nokogiri (>= 1.5.9)
87
- mail (2.7.1)
88
- mini_mime (>= 0.1.1)
89
- marcel (1.0.2)
90
- method_source (1.0.0)
91
- mini_mime (1.1.2)
92
- minitest (5.16.3)
93
- net-imap (0.3.1)
94
- net-protocol
95
- net-pop (0.1.2)
96
- net-protocol
97
- net-protocol (0.1.3)
98
- timeout
99
- net-smtp (0.3.2)
100
- net-protocol
101
- nio4r (2.5.8)
102
- nokogiri (1.13.8-x86_64-darwin)
103
- racc (~> 1.4)
104
- pg (1.3.2)
105
- racc (1.6.0)
106
- rack (2.2.4)
107
- rack-test (2.0.2)
108
- rack (>= 1.3)
109
- rails (7.0.4)
110
- actioncable (= 7.0.4)
111
- actionmailbox (= 7.0.4)
112
- actionmailer (= 7.0.4)
113
- actionpack (= 7.0.4)
114
- actiontext (= 7.0.4)
115
- actionview (= 7.0.4)
116
- activejob (= 7.0.4)
117
- activemodel (= 7.0.4)
118
- activerecord (= 7.0.4)
119
- activestorage (= 7.0.4)
120
- activesupport (= 7.0.4)
121
- bundler (>= 1.15.0)
122
- railties (= 7.0.4)
123
- rails-dom-testing (2.0.3)
124
- activesupport (>= 4.2.0)
125
- nokogiri (>= 1.6)
126
- rails-html-sanitizer (1.4.3)
127
- loofah (~> 2.3)
128
- railties (7.0.4)
129
- actionpack (= 7.0.4)
130
- activesupport (= 7.0.4)
131
- method_source
132
- rake (>= 12.2)
133
- thor (~> 1.0)
134
- zeitwerk (~> 2.5)
135
- rake (13.0.6)
136
- thor (1.2.1)
137
- timeout (0.3.0)
138
- tzinfo (2.0.5)
139
- concurrent-ruby (~> 1.0)
140
- websocket-driver (0.7.5)
141
- websocket-extensions (>= 0.1.0)
142
- websocket-extensions (0.1.5)
143
- zeitwerk (2.6.1)
144
-
145
- PLATFORMS
146
- x86_64-darwin-19
147
-
148
- DEPENDENCIES
149
- activesupport (~> 7)
150
- minitest (~> 5.0)
151
- pecorino!
152
- rails (~> 7)
153
- rake (~> 13.0)
154
-
155
- BUNDLED WITH
156
- 2.3.5