action_reporter 1.4.0 → 1.5.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 +10 -0
- data/README.md +31 -2
- data/action_reporter.gemspec +15 -13
- data/lib/action_reporter/audited_reporter.rb +22 -8
- data/lib/action_reporter/honeybadger_reporter.rb +1 -1
- data/lib/action_reporter/paper_trail_reporter.rb +23 -0
- data/lib/action_reporter/scout_apm_reporter.rb +5 -1
- data/lib/action_reporter/sentry_reporter.rb +1 -1
- data/lib/action_reporter.rb +36 -7
- metadata +22 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f663c691abaa4b55ce115001639b405521d07ee55b9bb37ec838c26f28e2fd4d
|
4
|
+
data.tar.gz: 4acb1954e62b1ecbfe19ba4112b1147bba8c44cbd703052bfba433b7aacd4cea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d4554027681577f761d588d77a61e6745951de6b39671e8ff75e0d8190bb81173ece7cd521190a801a277cbf52392b7f816e40ae470115fa424381c75a3018e
|
7
|
+
data.tar.gz: 37265ec7091183773a6261ac2ae1b0e006f77bbd050bd03bfd48b18d1c17f3a1d661707024602cfeb76a4a5a1cc87a78193f0aa0f0d64c563b59a526e4213c88
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# 1.5.0
|
2
|
+
|
3
|
+
* BREAKING: Rename `audited_user` to `current_user`
|
4
|
+
* Add `current_request_uuid` and `current_remote_addr` getters and setters
|
5
|
+
* Memoize `current_user`, `current_request_uuid`, and `current_remote_addr`
|
6
|
+
|
7
|
+
# 1.4.1
|
8
|
+
|
9
|
+
* Add paper_trail support
|
10
|
+
|
1
11
|
# 1.4.0
|
2
12
|
|
3
13
|
* Set minimum ruby version requirement to 2.5.0
|
data/README.md
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
# action_reporter
|
2
2
|
|
3
|
-
[](https://badge.fury.io/rb/action_reporter) [](https://github.com/amkisko/action_reporter.rb/actions/workflows/test.yml)
|
3
|
+
[](https://badge.fury.io/rb/action_reporter) [](https://github.com/amkisko/action_reporter.rb/actions/workflows/test.yml) [](https://codecov.io/gh/amkisko/action_reporter.rb)
|
4
|
+
|
5
|
+
[](https://app.codacy.com/gh/amkisko/action_reporter.rb/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [](https://app.codacy.com/gh/amkisko/action_reporter.rb/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage)
|
4
6
|
|
5
7
|
Ruby wrapper for multiple reporting services.
|
6
8
|
|
7
9
|
Supported services:
|
8
10
|
- Rails logger
|
9
11
|
- Audited
|
12
|
+
- PaperTrail
|
10
13
|
- Sentry
|
11
14
|
- Honeybadger
|
12
15
|
- scoutapm
|
@@ -39,6 +42,7 @@ Put this in your `config/initializers/action_reporter.rb` file:
|
|
39
42
|
ActionReporter.enabled_reporters = [
|
40
43
|
ActionReporter::RailsReporter.new,
|
41
44
|
# ActionReporter::AuditedReporter.new,
|
45
|
+
# ActionReporter::PaperTrailReporter.new,
|
42
46
|
# ActionReporter::SentryReporter.new,
|
43
47
|
# ActionReporter::HoneybadgerReporter.new,
|
44
48
|
# ActionReporter::ScoutApmReporter.new
|
@@ -48,15 +52,40 @@ ActionReporter.enabled_reporters = [
|
|
48
52
|
Then you can use it in your code:
|
49
53
|
|
50
54
|
```ruby
|
51
|
-
ActionReporter.
|
55
|
+
ActionReporter.current_user = current_user
|
56
|
+
ActionReporter.current_request_uuid = request.env['action_dispatch.request_id']
|
57
|
+
ActionReporter.current_remote_addr = request.env['action_dispatch.remote_ip']
|
52
58
|
ActionReporter.context(entry_id: entry.id)
|
53
59
|
ActionReporter.notify('Something went wrong', context: { record: record })
|
54
60
|
```
|
55
61
|
|
62
|
+
## Hook debugger to notify method
|
63
|
+
|
64
|
+
Apply patch on initializer level or before running the main code:
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
module ActionReporter
|
68
|
+
class RailsReporter < Base
|
69
|
+
def notify(error, context: {})
|
70
|
+
super
|
71
|
+
binding.pry
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
```
|
76
|
+
|
56
77
|
## Contributing
|
57
78
|
|
58
79
|
Bug reports and pull requests are welcome on GitHub at https://github.com/amkisko/action_reporter.rb
|
59
80
|
|
81
|
+
Contribution policy:
|
82
|
+
- It might take up to 2 calendar weeks to review and merge critical fixes
|
83
|
+
- It might take up to 6 calendar months to review and merge pull request
|
84
|
+
- It might take up to 1 calendar year to review an issue
|
85
|
+
- New integrations and third-party features are not nessessarily added to the gem
|
86
|
+
- Pull request should have test coverage for affected parts
|
87
|
+
- Pull request should have changelog entry
|
88
|
+
|
60
89
|
## Publishing
|
61
90
|
|
62
91
|
```sh
|
data/action_reporter.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = "action_reporter"
|
3
|
-
gem.version = File.read(File.expand_path(
|
3
|
+
gem.version = File.read(File.expand_path("../lib/action_reporter.rb", __FILE__)).match(/VERSION\s*=\s*'(.*?)'/)[1]
|
4
4
|
|
5
5
|
gem.license = "MIT"
|
6
6
|
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |gem|
|
|
21
21
|
"rubygems_mfa_required" => "true"
|
22
22
|
}
|
23
23
|
|
24
|
-
gem.files = Dir.glob("lib/**/*.rb") + Dir.glob("bin/**/*") + %w
|
24
|
+
gem.files = Dir.glob("lib/**/*.rb") + Dir.glob("bin/**/*") + %w[CHANGELOG.md LICENSE.md README.md action_reporter.gemspec]
|
25
25
|
|
26
26
|
# s.bindir = "bin"
|
27
27
|
# s.executables = ["action_reporter"]
|
@@ -29,15 +29,17 @@ Gem::Specification.new do |gem|
|
|
29
29
|
gem.required_ruby_version = ">= 2.5.0"
|
30
30
|
gem.require_path = "lib"
|
31
31
|
|
32
|
-
gem.add_runtime_dependency
|
33
|
-
|
34
|
-
gem.
|
35
|
-
gem.
|
36
|
-
gem.
|
37
|
-
|
38
|
-
gem.add_development_dependency
|
39
|
-
|
40
|
-
gem.add_development_dependency
|
41
|
-
gem.add_development_dependency
|
42
|
-
gem.add_development_dependency
|
32
|
+
gem.add_runtime_dependency "rails", "> 5"
|
33
|
+
|
34
|
+
gem.add_development_dependency "audited", "~> 5"
|
35
|
+
gem.add_development_dependency "honeybadger", "~> 5"
|
36
|
+
gem.add_development_dependency "sentry-ruby", "~> 5"
|
37
|
+
gem.add_development_dependency "scout_apm", "~> 5"
|
38
|
+
gem.add_development_dependency "paper_trail", "~> 15"
|
39
|
+
|
40
|
+
gem.add_development_dependency "rspec", "~> 3"
|
41
|
+
gem.add_development_dependency "webmock", "~> 3"
|
42
|
+
gem.add_development_dependency "pry", "~> 0.14"
|
43
|
+
gem.add_development_dependency "simplecov", "~> 0.21"
|
44
|
+
gem.add_development_dependency "simplecov-cobertura", "~> 2"
|
43
45
|
end
|
@@ -6,22 +6,36 @@ module ActionReporter
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def context(args)
|
9
|
-
Audited.store[:current_remote_address] = args[:remote_addr] if args[
|
10
|
-
:remote_addr
|
11
|
-
].present?
|
12
9
|
end
|
13
10
|
|
14
11
|
def reset_context
|
15
12
|
Audited.store.delete(:current_remote_address)
|
16
|
-
Audited.store.delete(:
|
13
|
+
Audited.store.delete(:current_request_uuid)
|
14
|
+
Audited.store.delete(:current_user)
|
17
15
|
end
|
18
16
|
|
19
|
-
def
|
20
|
-
Audited.store[:
|
17
|
+
def current_user
|
18
|
+
Audited.store[:current_user]
|
21
19
|
end
|
22
20
|
|
23
|
-
def
|
24
|
-
Audited.store[:
|
21
|
+
def current_user=(user)
|
22
|
+
Audited.store[:current_user] = user
|
23
|
+
end
|
24
|
+
|
25
|
+
def current_request_uuid
|
26
|
+
Audited.store[:current_request_uuid]
|
27
|
+
end
|
28
|
+
|
29
|
+
def current_request_uuid=(request_uuid)
|
30
|
+
Audited.store[:current_request_uuid] = request_uuid
|
31
|
+
end
|
32
|
+
|
33
|
+
def current_remote_addr
|
34
|
+
Audited.store[:current_remote_address]
|
35
|
+
end
|
36
|
+
|
37
|
+
def current_remote_addr=(remote_addr)
|
38
|
+
Audited.store[:current_remote_address] = remote_addr
|
25
39
|
end
|
26
40
|
end
|
27
41
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module ActionReporter
|
2
|
+
class PaperTrailReporter < Base
|
3
|
+
class_accessor "PaperTrail", gem_spec: "paper_trail (~> 15)"
|
4
|
+
|
5
|
+
def notify(*)
|
6
|
+
end
|
7
|
+
|
8
|
+
def context(args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def reset_context
|
12
|
+
PaperTrail.request.whodunnit = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def current_user
|
16
|
+
PaperTrail.request.whodunnit
|
17
|
+
end
|
18
|
+
|
19
|
+
def current_user=(user)
|
20
|
+
PaperTrail.request.whodunnit = user
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -13,8 +13,12 @@ module ActionReporter
|
|
13
13
|
scoutapm_context_class.add(new_context)
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
16
|
+
def current_user=(user)
|
17
17
|
scoutapm_context_class.add_user(user_global_id: user&.to_global_id&.to_s)
|
18
18
|
end
|
19
|
+
|
20
|
+
def ignore_transaction!
|
21
|
+
scoutapm_context_class.ignore_transaction!
|
22
|
+
end
|
19
23
|
end
|
20
24
|
end
|
data/lib/action_reporter.rb
CHANGED
@@ -5,18 +5,20 @@ require 'action_reporter/honeybadger_reporter'
|
|
5
5
|
require 'action_reporter/sentry_reporter'
|
6
6
|
require 'action_reporter/scout_apm_reporter'
|
7
7
|
require 'action_reporter/audited_reporter'
|
8
|
+
require 'action_reporter/paper_trail_reporter'
|
8
9
|
|
9
10
|
module ActionReporter
|
10
11
|
module_function
|
11
12
|
|
12
|
-
VERSION = '1.
|
13
|
+
VERSION = '1.5.0'.freeze
|
13
14
|
|
14
15
|
AVAILABLE_REPORTERS = [
|
15
16
|
ActionReporter::RailsReporter,
|
16
17
|
ActionReporter::HoneybadgerReporter,
|
17
18
|
ActionReporter::SentryReporter,
|
18
19
|
ActionReporter::ScoutApmReporter,
|
19
|
-
ActionReporter::AuditedReporter
|
20
|
+
ActionReporter::AuditedReporter,
|
21
|
+
ActionReporter::PaperTrailReporter
|
20
22
|
].freeze
|
21
23
|
|
22
24
|
@enabled_reporters = []
|
@@ -53,15 +55,42 @@ module ActionReporter
|
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
56
|
-
def
|
57
|
-
|
58
|
+
def current_user
|
59
|
+
@current_user
|
58
60
|
end
|
59
61
|
|
60
|
-
def
|
62
|
+
def current_user=(user)
|
63
|
+
@current_user = user
|
61
64
|
enabled_reporters.each do |reporter|
|
62
|
-
next unless reporter.respond_to?(:
|
65
|
+
next unless reporter.respond_to?(:current_user=)
|
63
66
|
|
64
|
-
reporter.
|
67
|
+
reporter.current_user = user
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def current_request_uuid
|
72
|
+
@current_request_uuid
|
73
|
+
end
|
74
|
+
|
75
|
+
def current_request_uuid=(request_uuid)
|
76
|
+
@current_request_uuid = request_uuid
|
77
|
+
enabled_reporters.each do |reporter|
|
78
|
+
next unless reporter.respond_to?(:current_request_uuid=)
|
79
|
+
|
80
|
+
reporter.current_request_uuid = request_uuid
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def current_remote_addr
|
85
|
+
@current_remote_addr
|
86
|
+
end
|
87
|
+
|
88
|
+
def current_remote_addr=(remote_addr)
|
89
|
+
@current_remote_addr = remote_addr
|
90
|
+
enabled_reporters.each do |reporter|
|
91
|
+
next unless reporter.respond_to?(:current_remote_addr=)
|
92
|
+
|
93
|
+
reporter.current_remote_addr = remote_addr
|
65
94
|
end
|
66
95
|
end
|
67
96
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: action_reporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrei Makarov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '5'
|
34
|
-
type: :
|
34
|
+
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
@@ -45,7 +45,7 @@ dependencies:
|
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '5'
|
48
|
-
type: :
|
48
|
+
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '5'
|
62
|
-
type: :
|
62
|
+
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
@@ -73,13 +73,27 @@ dependencies:
|
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '5'
|
76
|
-
type: :
|
76
|
+
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '5'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: paper_trail
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '15'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '15'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rspec
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,6 +180,7 @@ files:
|
|
166
180
|
- lib/action_reporter/base.rb
|
167
181
|
- lib/action_reporter/error.rb
|
168
182
|
- lib/action_reporter/honeybadger_reporter.rb
|
183
|
+
- lib/action_reporter/paper_trail_reporter.rb
|
169
184
|
- lib/action_reporter/rails_reporter.rb
|
170
185
|
- lib/action_reporter/scout_apm_reporter.rb
|
171
186
|
- lib/action_reporter/sentry_reporter.rb
|
@@ -194,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
209
|
- !ruby/object:Gem::Version
|
195
210
|
version: '0'
|
196
211
|
requirements: []
|
197
|
-
rubygems_version: 3.
|
212
|
+
rubygems_version: 3.5.11
|
198
213
|
signing_key:
|
199
214
|
specification_version: 4
|
200
215
|
summary: See description
|