ahoy_matey 1.5.0 → 1.5.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +0 -16
- data/ahoy_matey.gemspec +1 -0
- data/lib/ahoy.rb +9 -0
- data/lib/ahoy/engine.rb +5 -0
- data/lib/ahoy/throttle.rb +25 -0
- data/lib/ahoy/version.rb +1 -1
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e5a105f360566e591e93df058b2ef3f2b014d2b
|
4
|
+
data.tar.gz: 75b530f1d2ac5db181fce79e5e28772fee413e44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04728f524b58d1b923072dbf88f2f3e028bd9e7c09b40b7e26dcf24b1311255fcf851401c1890d473d1ef43f6b35abac94be4ec71d889211d09f6ebd573f7934
|
7
|
+
data.tar.gz: 40cd9292793a8a9df4f91c474deb5fe787b483d9cf7f9b76d00ef9ebe36a0d82511fdc12dcf506acd71849b5443f072110af1faf4983596006c7a96543ac3c1b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -530,18 +530,6 @@ Send a `POST` request as `Content-Type: application/json` to `/ahoy/events` with
|
|
530
530
|
|
531
531
|
Use an array to pass multiple events at once.
|
532
532
|
|
533
|
-
## Throttling
|
534
|
-
|
535
|
-
To throttle requests to Ahoy endpoints, check out [Rack::Attack](https://github.com/kickstarter/ack-attack). Here’s a sample config:
|
536
|
-
|
537
|
-
```ruby
|
538
|
-
Rack::Attack.throttle("ahoy/ip", limit: 20, period: 1.minute) do |req|
|
539
|
-
if req.path.start_with?("/ahoy/")
|
540
|
-
req.ip
|
541
|
-
end
|
542
|
-
end
|
543
|
-
```
|
544
|
-
|
545
533
|
## Reference
|
546
534
|
|
547
535
|
By default, Ahoy create endpoints at `/ahoy/visits` and `/ahoy/events`. To disable, use:
|
@@ -552,10 +540,6 @@ Ahoy.mount = false
|
|
552
540
|
|
553
541
|
## Upgrading
|
554
542
|
|
555
|
-
### 1.5.0
|
556
|
-
|
557
|
-
There’s nothing to do, but it’s worth noting that simple throttling, which was added in `1.3.0`, was removed due to unintended side effects with its implementation. See the [Throttling](#throttling) section for how to properly add it by hand if needed.
|
558
|
-
|
559
543
|
### 1.4.0
|
560
544
|
|
561
545
|
There’s nothing to do, but it’s worth noting the default store was changed from `ActiveRecordStore` to `ActiveRecordTokenStore` for new installations.
|
data/ahoy_matey.gemspec
CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_dependency "request_store"
|
28
28
|
spec.add_dependency "uuidtools"
|
29
29
|
spec.add_dependency "safely_block", ">= 0.1.1"
|
30
|
+
spec.add_dependency "rack-attack", "< 6"
|
30
31
|
|
31
32
|
spec.add_development_dependency "bundler", "~> 1.5"
|
32
33
|
spec.add_development_dependency "rake"
|
data/lib/ahoy.rb
CHANGED
@@ -72,6 +72,15 @@ module Ahoy
|
|
72
72
|
mattr_accessor :mount
|
73
73
|
self.mount = true
|
74
74
|
|
75
|
+
mattr_accessor :throttle
|
76
|
+
self.throttle = true
|
77
|
+
|
78
|
+
mattr_accessor :throttle_limit
|
79
|
+
self.throttle_limit = 20
|
80
|
+
|
81
|
+
mattr_accessor :throttle_period
|
82
|
+
self.throttle_period = 1.minute
|
83
|
+
|
75
84
|
mattr_accessor :job_queue
|
76
85
|
self.job_queue = :ahoy
|
77
86
|
|
data/lib/ahoy/engine.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
module Ahoy
|
2
2
|
class Engine < ::Rails::Engine
|
3
3
|
initializer "ahoy.middleware", after: "sprockets.environment" do |app|
|
4
|
+
if Ahoy.throttle
|
5
|
+
require "ahoy/throttle"
|
6
|
+
app.middleware.use Ahoy::Throttle
|
7
|
+
end
|
8
|
+
|
4
9
|
next unless Ahoy.quiet
|
5
10
|
|
6
11
|
# Parse PATH_INFO by assets prefix
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "rack/attack"
|
2
|
+
|
3
|
+
module Ahoy
|
4
|
+
class Throttle < Rack::Attack
|
5
|
+
throttle("ahoy/ip", limit: Ahoy.throttle_limit, period: Ahoy.throttle_period) do |req|
|
6
|
+
if req.path.start_with?("/ahoy/")
|
7
|
+
req.ip
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def_delegators self, :whitelisted?, :blacklisted?, :throttled?, :tracked?, :blocklisted?, :safelisted?
|
12
|
+
|
13
|
+
def self.throttled_response
|
14
|
+
Rack::Attack.throttled_response
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.blacklisted_response
|
18
|
+
Rack::Attack.blacklisted_response
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.blocklisted_response
|
22
|
+
Rack::Attack.blocklisted_response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/ahoy/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ahoy_matey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 0.1.1
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rack-attack
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "<"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '6'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "<"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '6'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: bundler
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -260,6 +274,7 @@ files:
|
|
260
274
|
- lib/ahoy/stores/log_store.rb
|
261
275
|
- lib/ahoy/stores/mongoid_store.rb
|
262
276
|
- lib/ahoy/subscribers/active_record.rb
|
277
|
+
- lib/ahoy/throttle.rb
|
263
278
|
- lib/ahoy/tracker.rb
|
264
279
|
- lib/ahoy/version.rb
|
265
280
|
- lib/ahoy/visit_properties.rb
|