dry-monitor 0.3.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -1
- data/LICENSE +1 -1
- data/README.md +5 -4
- data/dry-monitor.gemspec +17 -16
- data/lib/dry/monitor/notifications.rb +3 -6
- data/lib/dry/monitor/rack/logger.rb +9 -20
- data/lib/dry/monitor/rack/middleware.rb +1 -5
- data/lib/dry/monitor/sql/colorizers/rouge.rb +1 -2
- data/lib/dry/monitor/sql/logger.rb +5 -14
- data/lib/dry/monitor/version.rb +1 -1
- data/lib/dry/monitor.rb +21 -4
- metadata +25 -14
- data/lib/dry/monitor/constants.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5f22e78dd92f5dd4177daec60c9d8bab1583df9478f4741780706c354607041
|
4
|
+
data.tar.gz: fe37f4deef05a9eb250d1afe730dffe4f803e22252a4b1ebef54a254f725a1dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 733d07a4274411c35a687052b46f007c8a678bf417b7f284fb06d9725f62827190717bf8611881fa10183c34620f795d33f0aa201a9ce98cb58e1203c2c6b3ce
|
7
|
+
data.tar.gz: 9a121f35e111f90de89fbb30429963127dff82bb2ae9ed4de1fbaeefb1874f7d573c52de0b0e7f5bb173ae7d6919c31d35101f7779713e51af980e4ec3c4f89a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,34 @@
|
|
1
|
+
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
|
+
|
3
|
+
## 0.6.0 2022-07-10
|
4
|
+
|
5
|
+
|
6
|
+
### Added
|
7
|
+
|
8
|
+
- Zeitwerk integration :tada: so that you can simply do `require "dry/monitor"` and other constants will be auto-loaded on demand (via #47) (@gmcgibbon)
|
9
|
+
|
10
|
+
|
11
|
+
[Compare v0.5.0...v0.6.0](https://github.com/dry-rb/dry-monitor/compare/v0.5.0...v0.6.0)
|
12
|
+
|
13
|
+
## 0.5.0 2021-09-12
|
14
|
+
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
|
18
|
+
- [internal] Upgraded to new `setting` API provided in dry-configurable 0.13.0 (@timriley in #43)
|
19
|
+
|
20
|
+
[Compare v0.4.0...v0.5.0](https://github.com/dry-rb/dry-monitor/compare/v0.4.0...v0.5.0)
|
21
|
+
|
22
|
+
## 0.4.0 2021-04-09
|
23
|
+
|
24
|
+
|
25
|
+
### Fixed
|
26
|
+
|
27
|
+
- Compatibility with MRI 3.0 (@alex-damian-negru)
|
28
|
+
|
29
|
+
|
30
|
+
[Compare v0.3.2...v0.4.0](https://github.com/dry-rb/dry-monitor/compare/v0.3.2...v0.4.0)
|
31
|
+
|
1
32
|
## 0.3.2 2020-04-09
|
2
33
|
|
3
34
|
|
@@ -8,7 +39,6 @@
|
|
8
39
|
### Changed
|
9
40
|
|
10
41
|
- Performance improvements (@davydovanton)
|
11
|
-
- Dependency on `dry-events` was bumped to `~> 0.5` (@davydovanton)
|
12
42
|
|
13
43
|
[Compare v0.3.1...v0.3.2](https://github.com/dry-rb/dry-monitor/compare/v0.3.1...v0.3.2)
|
14
44
|
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
<!--- this file is synced from dry-rb/template-gem project -->
|
1
2
|
[gem]: https://rubygems.org/gems/dry-monitor
|
2
3
|
[actions]: https://github.com/dry-rb/dry-monitor/actions
|
3
4
|
[codacy]: https://www.codacy.com/gh/dry-rb/dry-monitor
|
@@ -10,19 +11,19 @@
|
|
10
11
|
[![CI Status](https://github.com/dry-rb/dry-monitor/workflows/ci/badge.svg)][actions]
|
11
12
|
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/984c4274e56d423a818e7a1bf5e963d0)][codacy]
|
12
13
|
[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/984c4274e56d423a818e7a1bf5e963d0)][codacy]
|
13
|
-
[![Inline docs](http://inch-ci.org/github/dry-rb/dry-monitor.svg?branch=
|
14
|
+
[![Inline docs](http://inch-ci.org/github/dry-rb/dry-monitor.svg?branch=main)][inchpages]
|
14
15
|
|
15
16
|
## Links
|
16
17
|
|
17
|
-
* [User documentation](
|
18
|
+
* [User documentation](https://dry-rb.org/gems/dry-monitor)
|
18
19
|
* [API documentation](http://rubydoc.info/gems/dry-monitor)
|
19
20
|
|
20
21
|
## Supported Ruby versions
|
21
22
|
|
22
23
|
This library officially supports the following Ruby versions:
|
23
24
|
|
24
|
-
* MRI
|
25
|
-
* jruby
|
25
|
+
* MRI `>= 2.7.0`
|
26
|
+
* jruby `>= 9.3` (postponed until 2.7 is supported)
|
26
27
|
|
27
28
|
## License
|
28
29
|
|
data/dry-monitor.gemspec
CHANGED
@@ -1,37 +1,38 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# this file is managed by dry-rb/devtools project
|
3
2
|
|
4
|
-
|
3
|
+
# this file is synced from dry-rb/template-gem project
|
4
|
+
|
5
|
+
lib = File.expand_path("lib", __dir__)
|
5
6
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
|
-
require
|
7
|
+
require "dry/monitor/version"
|
7
8
|
|
8
9
|
Gem::Specification.new do |spec|
|
9
|
-
spec.name =
|
10
|
+
spec.name = "dry-monitor"
|
10
11
|
spec.authors = ["Piotr Solnica"]
|
11
12
|
spec.email = ["piotr.solnica@gmail.com"]
|
12
|
-
spec.license =
|
13
|
+
spec.license = "MIT"
|
13
14
|
spec.version = Dry::Monitor::VERSION.dup
|
14
15
|
|
15
16
|
spec.summary = "Monitoring and instrumentation APIs"
|
16
17
|
spec.description = spec.summary
|
17
|
-
spec.homepage =
|
18
|
+
spec.homepage = "https://dry-rb.org/gems/dry-monitor"
|
18
19
|
spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-monitor.gemspec", "lib/**/*"]
|
19
|
-
spec.bindir =
|
20
|
+
spec.bindir = "bin"
|
20
21
|
spec.executables = []
|
21
|
-
spec.require_paths = [
|
22
|
+
spec.require_paths = ["lib"]
|
22
23
|
|
23
|
-
spec.metadata[
|
24
|
-
spec.metadata[
|
25
|
-
spec.metadata[
|
26
|
-
spec.metadata[
|
24
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
25
|
+
spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-monitor/blob/main/CHANGELOG.md"
|
26
|
+
spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-monitor"
|
27
|
+
spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-monitor/issues"
|
27
28
|
|
28
|
-
spec.required_ruby_version = ">= 2.
|
29
|
+
spec.required_ruby_version = ">= 2.7.0"
|
29
30
|
|
30
31
|
# to update dependencies edit project.yml
|
31
|
-
spec.add_runtime_dependency "dry-configurable", "~> 0.
|
32
|
-
spec.add_runtime_dependency "dry-core", "~> 0.
|
33
|
-
spec.add_runtime_dependency "dry-equalizer", "~> 0.2"
|
32
|
+
spec.add_runtime_dependency "dry-configurable", "~> 0.13", ">= 0.13.0"
|
33
|
+
spec.add_runtime_dependency "dry-core", "~> 0.5", ">= 0.5"
|
34
34
|
spec.add_runtime_dependency "dry-events", "~> 0.2"
|
35
|
+
spec.add_runtime_dependency "zeitwerk", "~> 2.5"
|
35
36
|
|
36
37
|
spec.add_development_dependency "bundler"
|
37
38
|
spec.add_development_dependency "rake"
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "dry/events/publisher"
|
4
|
-
require "dry/monitor/constants"
|
5
4
|
|
6
5
|
module Dry
|
7
6
|
module Monitor
|
@@ -22,9 +21,7 @@ module Dry
|
|
22
21
|
class Notifications
|
23
22
|
include Events::Publisher["Dry::Monitor::Notifications"]
|
24
23
|
|
25
|
-
attr_reader :id
|
26
|
-
|
27
|
-
attr_reader :clock
|
24
|
+
attr_reader :id, :clock
|
28
25
|
|
29
26
|
def initialize(id)
|
30
27
|
@id = id
|
@@ -39,8 +36,8 @@ module Dry
|
|
39
36
|
instrument(event_id, payload)
|
40
37
|
end
|
41
38
|
|
42
|
-
def instrument(event_id, payload = EMPTY_HASH)
|
43
|
-
result, time = @clock.measure
|
39
|
+
def instrument(event_id, payload = EMPTY_HASH, &block)
|
40
|
+
result, time = @clock.measure(&block) if block_given?
|
44
41
|
|
45
42
|
process(event_id, payload) do |event, listener|
|
46
43
|
if time
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "dry/configurable"
|
4
|
-
require "dry/monitor/rack/middleware"
|
5
4
|
|
6
5
|
module Dry
|
7
6
|
module Monitor
|
@@ -9,7 +8,7 @@ module Dry
|
|
9
8
|
class Logger
|
10
9
|
extend Dry::Configurable
|
11
10
|
|
12
|
-
setting :filtered_params, %w[_csrf password]
|
11
|
+
setting :filtered_params, default: %w[_csrf password]
|
13
12
|
|
14
13
|
REQUEST_METHOD = "REQUEST_METHOD"
|
15
14
|
PATH_INFO = "PATH_INFO"
|
@@ -21,9 +20,7 @@ module Dry
|
|
21
20
|
QUERY_MSG = %( Query parameters )
|
22
21
|
FILTERED = "[FILTERED]"
|
23
22
|
|
24
|
-
attr_reader :logger
|
25
|
-
|
26
|
-
attr_reader :config
|
23
|
+
attr_reader :logger, :config
|
27
24
|
|
28
25
|
def initialize(logger, config = self.class.config)
|
29
26
|
@logger = logger
|
@@ -31,17 +28,9 @@ module Dry
|
|
31
28
|
end
|
32
29
|
|
33
30
|
def attach(rack_monitor)
|
34
|
-
rack_monitor.on(:start)
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
rack_monitor.on(:stop) do |env:, status:, time:|
|
39
|
-
log_stop_request(env, status, time)
|
40
|
-
end
|
41
|
-
|
42
|
-
rack_monitor.on(:error) do |event|
|
43
|
-
log_exception(event[:exception])
|
44
|
-
end
|
31
|
+
rack_monitor.on(:start) { |params| log_start_request(params[:env]) }
|
32
|
+
rack_monitor.on(:stop) { |params| log_stop_request(**params) }
|
33
|
+
rack_monitor.on(:error) { |event| log_exception(event[:exception]) }
|
45
34
|
end
|
46
35
|
|
47
36
|
def log_exception(err)
|
@@ -59,11 +48,11 @@ module Dry
|
|
59
48
|
log_request_params(request)
|
60
49
|
end
|
61
50
|
|
62
|
-
def log_stop_request(
|
51
|
+
def log_stop_request(env:, status:, time:)
|
63
52
|
logger.info STOP_MSG % [
|
64
|
-
|
65
|
-
|
66
|
-
|
53
|
+
env[REQUEST_METHOD],
|
54
|
+
env[PATH_INFO],
|
55
|
+
env[REMOTE_ADDR],
|
67
56
|
time,
|
68
57
|
status
|
69
58
|
]
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/monitor/notifications"
|
4
|
-
|
5
3
|
module Dry
|
6
4
|
module Monitor
|
7
5
|
module Rack
|
@@ -14,9 +12,7 @@ module Dry
|
|
14
12
|
Notifications.register_event(REQUEST_STOP)
|
15
13
|
Notifications.register_event(REQUEST_ERROR)
|
16
14
|
|
17
|
-
attr_reader :app
|
18
|
-
|
19
|
-
attr_reader :notifications
|
15
|
+
attr_reader :app, :notifications
|
20
16
|
|
21
17
|
def initialize(*args)
|
22
18
|
@notifications, @app = *args
|
@@ -15,8 +15,7 @@ module Dry
|
|
15
15
|
module SQL
|
16
16
|
module Colorizers
|
17
17
|
class Rouge
|
18
|
-
attr_reader :formatter
|
19
|
-
attr_reader :lexer
|
18
|
+
attr_reader :formatter, :lexer
|
20
19
|
|
21
20
|
def initialize(theme)
|
22
21
|
@formatter = ::Rouge::Formatters::Terminal256.new(theme || ::Rouge::Themes::Gruvbox.new)
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require "dry-configurable"
|
4
4
|
require "dry/core/extensions"
|
5
|
-
require "dry/monitor/notifications"
|
6
5
|
|
7
6
|
module Dry
|
8
7
|
module Monitor
|
@@ -14,8 +13,6 @@ module Dry
|
|
14
13
|
extend Dry::Configurable
|
15
14
|
|
16
15
|
register_extension(:default_colorizer) do
|
17
|
-
require_relative "./colorizers/default"
|
18
|
-
|
19
16
|
module DefaultColorizer
|
20
17
|
def colorizer
|
21
18
|
@colorizer ||= Colorizers::Default.new(config.theme)
|
@@ -26,8 +23,6 @@ module Dry
|
|
26
23
|
end
|
27
24
|
|
28
25
|
register_extension(:rouge_colorizer) do
|
29
|
-
require_relative "./colorizers/rouge"
|
30
|
-
|
31
26
|
module RougeColorizer
|
32
27
|
def colorizer
|
33
28
|
@colorizer ||= Colorizers::Rouge.new(config.theme)
|
@@ -37,12 +32,10 @@ module Dry
|
|
37
32
|
Logger.include(RougeColorizer)
|
38
33
|
end
|
39
34
|
|
40
|
-
setting :theme
|
41
|
-
setting :message_template, %( Loaded %s in %sms %s)
|
35
|
+
setting :theme
|
36
|
+
setting :message_template, default: %( Loaded %s in %sms %s)
|
42
37
|
|
43
|
-
attr_reader :config
|
44
|
-
attr_reader :logger
|
45
|
-
attr_reader :template
|
38
|
+
attr_reader :config, :logger, :template
|
46
39
|
|
47
40
|
load_extensions(:default_colorizer)
|
48
41
|
|
@@ -53,12 +46,10 @@ module Dry
|
|
53
46
|
end
|
54
47
|
|
55
48
|
def subscribe(notifications)
|
56
|
-
notifications.subscribe(:sql)
|
57
|
-
log_query(time, name, query)
|
58
|
-
end
|
49
|
+
notifications.subscribe(:sql) { |params| log_query(**params) }
|
59
50
|
end
|
60
51
|
|
61
|
-
def log_query(time
|
52
|
+
def log_query(time:, name:, query:)
|
62
53
|
logger.info template % [name.inspect, time, colorizer.call(query)]
|
63
54
|
end
|
64
55
|
end
|
data/lib/dry/monitor/version.rb
CHANGED
data/lib/dry/monitor.rb
CHANGED
@@ -1,20 +1,37 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/monitor/logger"
|
4
|
-
require "dry/monitor/notifications"
|
5
3
|
require "dry/core/extensions"
|
4
|
+
require "dry/core/constants"
|
5
|
+
require "zeitwerk"
|
6
6
|
|
7
7
|
module Dry
|
8
8
|
module Monitor
|
9
9
|
extend Dry::Core::Extensions
|
10
|
+
include Dry::Core::Constants
|
10
11
|
|
11
12
|
register_extension(:rack) do
|
12
13
|
require "rack/utils"
|
13
|
-
|
14
|
+
|
15
|
+
Dry::Monitor::Rack::Logger
|
14
16
|
end
|
15
17
|
|
16
18
|
register_extension(:sql) do
|
17
|
-
|
19
|
+
Dry::Monitor::SQL::Logger
|
20
|
+
end
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def loader
|
24
|
+
@loader ||= Zeitwerk::Loader.new.tap do |loader|
|
25
|
+
root = File.expand_path("..", __dir__)
|
26
|
+
loader.tag = "dry-monitor"
|
27
|
+
loader.inflector = Zeitwerk::GemInflector.new("#{root}/dry-monitor.rb")
|
28
|
+
loader.push_dir(root)
|
29
|
+
loader.ignore("#{root}/dry-monitor.rb")
|
30
|
+
loader.inflector.inflect "sql" => "SQL"
|
31
|
+
end
|
32
|
+
end
|
18
33
|
end
|
19
34
|
end
|
20
35
|
end
|
36
|
+
|
37
|
+
Dry::Monitor.loader.setup
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-monitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-configurable
|
@@ -16,30 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.13'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.13.0
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
29
|
+
version: '0.13'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.13.0
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: dry-core
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
39
|
+
version: '0.5'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0.5'
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
47
|
- - "~>"
|
39
48
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
49
|
+
version: '0.5'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0.5'
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: dry-
|
54
|
+
name: dry-events
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
44
56
|
requirements:
|
45
57
|
- - "~>"
|
@@ -53,19 +65,19 @@ dependencies:
|
|
53
65
|
- !ruby/object:Gem::Version
|
54
66
|
version: '0.2'
|
55
67
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
68
|
+
name: zeitwerk
|
57
69
|
requirement: !ruby/object:Gem::Requirement
|
58
70
|
requirements:
|
59
71
|
- - "~>"
|
60
72
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
73
|
+
version: '2.5'
|
62
74
|
type: :runtime
|
63
75
|
prerelease: false
|
64
76
|
version_requirements: !ruby/object:Gem::Requirement
|
65
77
|
requirements:
|
66
78
|
- - "~>"
|
67
79
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
80
|
+
version: '2.5'
|
69
81
|
- !ruby/object:Gem::Dependency
|
70
82
|
name: bundler
|
71
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,7 +153,6 @@ files:
|
|
141
153
|
- dry-monitor.gemspec
|
142
154
|
- lib/dry-monitor.rb
|
143
155
|
- lib/dry/monitor.rb
|
144
|
-
- lib/dry/monitor/constants.rb
|
145
156
|
- lib/dry/monitor/logger.rb
|
146
157
|
- lib/dry/monitor/notifications.rb
|
147
158
|
- lib/dry/monitor/rack/logger.rb
|
@@ -155,7 +166,7 @@ licenses:
|
|
155
166
|
- MIT
|
156
167
|
metadata:
|
157
168
|
allowed_push_host: https://rubygems.org
|
158
|
-
changelog_uri: https://github.com/dry-rb/dry-monitor/blob/
|
169
|
+
changelog_uri: https://github.com/dry-rb/dry-monitor/blob/main/CHANGELOG.md
|
159
170
|
source_code_uri: https://github.com/dry-rb/dry-monitor
|
160
171
|
bug_tracker_uri: https://github.com/dry-rb/dry-monitor/issues
|
161
172
|
post_install_message:
|
@@ -166,14 +177,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
166
177
|
requirements:
|
167
178
|
- - ">="
|
168
179
|
- !ruby/object:Gem::Version
|
169
|
-
version: 2.
|
180
|
+
version: 2.7.0
|
170
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
182
|
requirements:
|
172
183
|
- - ">="
|
173
184
|
- !ruby/object:Gem::Version
|
174
185
|
version: '0'
|
175
186
|
requirements: []
|
176
|
-
rubygems_version: 3.
|
187
|
+
rubygems_version: 3.1.6
|
177
188
|
signing_key:
|
178
189
|
specification_version: 4
|
179
190
|
summary: Monitoring and instrumentation APIs
|