notable 0.3.1 → 0.4.0
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 +17 -0
- data/LICENSE.txt +1 -1
- data/README.md +16 -27
- data/lib/generators/notable/templates/create_jobs.rb.tt +1 -1
- data/lib/generators/notable/templates/create_requests.rb.tt +2 -5
- data/lib/notable/job_extensions.rb +2 -2
- data/lib/notable/throttle.rb +1 -1
- data/lib/notable/unverified_request.rb +1 -1
- data/lib/notable/version.rb +1 -1
- data/lib/notable.rb +1 -0
- metadata +11 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7ba556539ddc3c2c67a5fc37623c138c15432f32e962ff60118863ecd5ff3b7
|
4
|
+
data.tar.gz: a301a3c1a1f84c0bce4dd83e1a965210d6ccb08586c9b2bb6f51fb10676d3f8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f7cb09c2f95526ebd6862199fcbe8889a50919c93e63293a5142efd5346998b7d9c803c358c0e283db43967e7f7303e22409b3afbc5206ea78939de7846ab84
|
7
|
+
data.tar.gz: c7612312bafaefbe1cee0f3b70f1bb0dff3bc0963e8116f1c110452d2b6634a8f3df1c7455dce10a058c934a2da71edb5569396d020292c15a075bdfa63e48f7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
## 0.4.0 (2022-01-10)
|
2
|
+
|
3
|
+
- Dropped support for Ruby < 2.6 and Rails < 5.2
|
4
|
+
|
5
|
+
## 0.3.4 (2020-09-07)
|
6
|
+
|
7
|
+
- Use `datetime` type in migration
|
8
|
+
|
9
|
+
## 0.3.3 (2020-07-26)
|
10
|
+
|
11
|
+
- Added support for `queued_time` for Active Job 6
|
12
|
+
|
13
|
+
## 0.3.2 (2020-07-24)
|
14
|
+
|
15
|
+
- Added support for Rails API
|
16
|
+
- Fixed blocked requests with Rack::Attack
|
17
|
+
|
1
18
|
## 0.3.1 (2020-05-20)
|
2
19
|
|
3
20
|
- Fixed deprecation warning in Ruby 2.7
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
# Notable
|
2
2
|
|
3
|
-
:star2:
|
3
|
+
:star2: :star2: :star2:
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
#### Introducing Notable
|
8
|
-
|
9
|
-
Notable tracks notable requests and background jobs and stores them in your database. What makes a request or job notable? There are a number of default situations, but ultimately you decide what interests you.
|
5
|
+
Notable tracks notable requests and background jobs and stores them in your database. What makes a request or job notable? There are a number of default situations, but ultimately you decide what interests you.
|
10
6
|
|
11
7
|
By default, Notable tracks:
|
12
8
|
|
@@ -23,12 +19,14 @@ You can track custom notes as well.
|
|
23
19
|
|
24
20
|
:tangerine: Battle-tested at [Instacart](https://www.instacart.com/opensource)
|
25
21
|
|
22
|
+
[](https://github.com/ankane/notable/actions)
|
23
|
+
|
26
24
|
## Installation
|
27
25
|
|
28
26
|
Add this line to your application’s Gemfile:
|
29
27
|
|
30
28
|
```ruby
|
31
|
-
gem
|
29
|
+
gem "notable"
|
32
30
|
```
|
33
31
|
|
34
32
|
And run:
|
@@ -41,26 +39,18 @@ rails db:migrate
|
|
41
39
|
|
42
40
|
To explore the data, check out [Blazer](https://github.com/ankane/blazer).
|
43
41
|
|
44
|
-
##
|
42
|
+
## How It Works
|
45
43
|
|
46
44
|
A `Notable::Request` is created for:
|
47
45
|
|
48
46
|
- errors
|
49
47
|
- 404s
|
50
48
|
- slow requests
|
51
|
-
- timeouts
|
49
|
+
- timeouts from [Slowpoke](https://github.com/ankane/slowpoke)
|
52
50
|
- validation failures
|
53
51
|
- [CSRF failures](https://guides.rubyonrails.org/security.html#cross-site-request-forgery-csrf)
|
54
52
|
- unpermitted parameters
|
55
|
-
- blocked and throttled requests
|
56
|
-
|
57
|
-
For timeouts, use [Slowpoke](https://github.com/ankane/slowpoke).
|
58
|
-
|
59
|
-
For blocked and throttled requests, use [Rack Attack](https://github.com/kickstarter/rack-attack).
|
60
|
-
|
61
|
-
## Jobs
|
62
|
-
|
63
|
-
Wouldn’t it be great to have a record of exact jobs that fail?
|
53
|
+
- blocked and throttled requests from [Rack Attack](https://github.com/kickstarter/rack-attack)
|
64
54
|
|
65
55
|
A `Notable::Job` is created for:
|
66
56
|
|
@@ -68,19 +58,13 @@ A `Notable::Job` is created for:
|
|
68
58
|
- slow jobs
|
69
59
|
- validation failures
|
70
60
|
|
71
|
-
|
61
|
+
Create a custom note inside a request or job with:
|
72
62
|
|
73
63
|
```ruby
|
74
|
-
Notable.track(
|
64
|
+
Notable.track("Note Type", "Optional extra info")
|
75
65
|
```
|
76
66
|
|
77
|
-
|
78
|
-
|
79
|
-
```ruby
|
80
|
-
Notable.track("Auth Event", "Signed In")
|
81
|
-
```
|
82
|
-
|
83
|
-
## Customize
|
67
|
+
## Customization
|
84
68
|
|
85
69
|
Disable tracking in certain environments
|
86
70
|
|
@@ -150,6 +134,10 @@ Notable.track_job_method = lambda do |data|
|
|
150
134
|
end
|
151
135
|
```
|
152
136
|
|
137
|
+
## History
|
138
|
+
|
139
|
+
View the [changelog](https://github.com/ankane/notable/blob/master/CHANGELOG.md)
|
140
|
+
|
153
141
|
## Contributing
|
154
142
|
|
155
143
|
Everyone is encouraged to help improve this project. Here are a few ways you can help:
|
@@ -165,4 +153,5 @@ To get started with development:
|
|
165
153
|
git clone https://github.com/ankane/notable.git
|
166
154
|
cd notable
|
167
155
|
bundle install
|
156
|
+
bundle exec rake test
|
168
157
|
```
|
@@ -3,8 +3,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration<%= migration_version
|
|
3
3
|
create_table :notable_requests do |t|
|
4
4
|
t.string :note_type
|
5
5
|
t.text :note
|
6
|
-
t.
|
7
|
-
t.string :user_type
|
6
|
+
t.references :user, polymorphic: true
|
8
7
|
t.text :action
|
9
8
|
t.integer :status
|
10
9
|
t.text :url
|
@@ -14,9 +13,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration<%= migration_version
|
|
14
13
|
t.text :referrer
|
15
14
|
t.text :params
|
16
15
|
t.float :request_time
|
17
|
-
t.
|
16
|
+
t.datetime :created_at
|
18
17
|
end
|
19
|
-
|
20
|
-
add_index :notable_requests, [:user_id, :user_type]
|
21
18
|
end
|
22
19
|
end
|
@@ -4,8 +4,8 @@ module Notable
|
|
4
4
|
|
5
5
|
included do
|
6
6
|
around_perform do |job, block|
|
7
|
-
#
|
8
|
-
Notable.track_job(job.class.name, job.job_id, job.queue_name,
|
7
|
+
# enqueued_at is only available in Active Job 6+
|
8
|
+
Notable.track_job(job.class.name, job.job_id, job.queue_name, job.try(:enqueued_at), try(:notable_slow_job_threshold)) do
|
9
9
|
block.call
|
10
10
|
end
|
11
11
|
end
|
data/lib/notable/throttle.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
ActiveSupport::Notifications.subscribe "rack.attack" do |_name, _start, _finish, _request_id, req|
|
2
2
|
request = req.is_a?(Hash) ? req[:request] : req
|
3
3
|
|
4
|
-
if [:blacklist, :throttle].include?(request.env["rack.attack.match_type"])
|
4
|
+
if [:blacklist, :blocklist, :throttle].include?(request.env["rack.attack.match_type"])
|
5
5
|
Notable.track "Throttle", request.env["rack.attack.matched"]
|
6
6
|
end
|
7
7
|
end
|
@@ -7,7 +7,7 @@ module Notable
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def track_unverified_request
|
10
|
-
if !verified_request?
|
10
|
+
if respond_to?(:verified_request?, true) && !verified_request?
|
11
11
|
expected = form_authenticity_token
|
12
12
|
actual = form_authenticity_param || request.headers["X-CSRF-Token"]
|
13
13
|
Notable.track "Unverified Request", "#{actual || "nil"} != #{expected}"
|
data/lib/notable/version.rb
CHANGED
data/lib/notable.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: notable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '5'
|
19
|
+
version: '5.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '5'
|
26
|
+
version: '5.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: safely_block
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,36 +38,8 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.1.1
|
41
|
-
|
42
|
-
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
description:
|
70
|
-
email: andrew@chartkick.com
|
41
|
+
description:
|
42
|
+
email: andrew@ankane.org
|
71
43
|
executables: []
|
72
44
|
extensions: []
|
73
45
|
extra_rdoc_files: []
|
@@ -95,7 +67,7 @@ homepage: https://github.com/ankane/notable
|
|
95
67
|
licenses:
|
96
68
|
- MIT
|
97
69
|
metadata: {}
|
98
|
-
post_install_message:
|
70
|
+
post_install_message:
|
99
71
|
rdoc_options: []
|
100
72
|
require_paths:
|
101
73
|
- lib
|
@@ -103,15 +75,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
75
|
requirements:
|
104
76
|
- - ">="
|
105
77
|
- !ruby/object:Gem::Version
|
106
|
-
version: '2.
|
78
|
+
version: '2.6'
|
107
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
80
|
requirements:
|
109
81
|
- - ">="
|
110
82
|
- !ruby/object:Gem::Version
|
111
83
|
version: '0'
|
112
84
|
requirements: []
|
113
|
-
rubygems_version: 3.
|
114
|
-
signing_key:
|
85
|
+
rubygems_version: 3.3.3
|
86
|
+
signing_key:
|
115
87
|
specification_version: 4
|
116
88
|
summary: Track notable requests and background jobs
|
117
89
|
test_files: []
|