dry-monitor 0.7.0 → 1.0.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 +20 -0
- data/dry-monitor.gemspec +3 -4
- data/lib/dry/monitor/clock.rb +25 -0
- data/lib/dry/monitor/notifications.rb +2 -14
- data/lib/dry/monitor/rack/logger.rb +1 -1
- data/lib/dry/monitor/rack/middleware.rb +5 -4
- data/lib/dry/monitor/version.rb +1 -1
- data/lib/dry/monitor.rb +4 -2
- metadata +21 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afa00138c4dc7ce920300c3d5ea5e88bfe95a32d8a195b55398a5ae8896c734a
|
4
|
+
data.tar.gz: d2486b5a1dbdb10630969e46c52cf0b3e4c2db66cf1576a64a6dc9486e6c6d93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74d9e1d40b2c51fdf96cff797eb66c4c16b3d38924b226d83045384de3c48695f05b15b485930513924957c5a38862496c6e541b28a6b9235be0f7a2cecbe0c6
|
7
|
+
data.tar.gz: e049809c0246586f57195438dffef39c3e521fb8793e7f1a772b96185fdc87d97f2170c540517cb22a1984f0772d7a815672e44e27149313f3f98c45a04c1799
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,25 @@
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
2
|
|
3
|
+
## 1.0.1 2022-11-17
|
4
|
+
|
5
|
+
|
6
|
+
### Added
|
7
|
+
|
8
|
+
- Extend Clock with support for configurable units (via #50) (@solnic)
|
9
|
+
|
10
|
+
|
11
|
+
[Compare v1.0.0...v1.0.1](https://github.com/dry-rb/dry-monitor/compare/v1.0.0...v1.0.1)
|
12
|
+
|
13
|
+
## 1.0.0 2022-11-04
|
14
|
+
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
|
18
|
+
- This version is compatible with recently released dry-rb dependencies (@flash-gordon)
|
19
|
+
- Bumped version to 1.0.0 (@solnic)
|
20
|
+
|
21
|
+
[Compare v0.7.0...v1.0.0](https://github.com/dry-rb/dry-monitor/compare/v0.7.0...v1.0.0)
|
22
|
+
|
3
23
|
## 0.7.0 2022-10-15
|
4
24
|
|
5
25
|
|
data/dry-monitor.gemspec
CHANGED
@@ -29,12 +29,11 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.required_ruby_version = ">= 2.7.0"
|
30
30
|
|
31
31
|
# to update dependencies edit project.yml
|
32
|
-
spec.add_runtime_dependency "dry-configurable", "~> 0
|
33
|
-
spec.add_runtime_dependency "dry-core", "~> 0
|
34
|
-
spec.add_runtime_dependency "dry-events", "~> 0
|
32
|
+
spec.add_runtime_dependency "dry-configurable", "~> 1.0", "< 2"
|
33
|
+
spec.add_runtime_dependency "dry-core", "~> 1.0", "< 2"
|
34
|
+
spec.add_runtime_dependency "dry-events", "~> 1.0", "< 2"
|
35
35
|
|
36
36
|
spec.add_development_dependency "bundler"
|
37
|
-
spec.add_development_dependency "rake"
|
38
37
|
spec.add_development_dependency "rouge", "~> 2.0", ">= 2.2.1"
|
39
38
|
spec.add_development_dependency "rspec"
|
40
39
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dry
|
4
|
+
module Monitor
|
5
|
+
# @api public
|
6
|
+
class Clock
|
7
|
+
# @api private
|
8
|
+
def initialize(unit: :millisecond)
|
9
|
+
@unit = unit
|
10
|
+
end
|
11
|
+
|
12
|
+
# @api public
|
13
|
+
def measure
|
14
|
+
start = current
|
15
|
+
result = yield
|
16
|
+
[result, current - start]
|
17
|
+
end
|
18
|
+
|
19
|
+
# @api public
|
20
|
+
def current
|
21
|
+
Process.clock_gettime(Process::CLOCK_MONOTONIC, @unit)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -4,18 +4,6 @@ require "dry/events/publisher"
|
|
4
4
|
|
5
5
|
module Dry
|
6
6
|
module Monitor
|
7
|
-
class Clock
|
8
|
-
def measure
|
9
|
-
start = current
|
10
|
-
result = yield
|
11
|
-
[result, current - start]
|
12
|
-
end
|
13
|
-
|
14
|
-
def current
|
15
|
-
Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
7
|
CLOCK = Clock.new
|
20
8
|
|
21
9
|
class Notifications
|
@@ -24,9 +12,9 @@ module Dry
|
|
24
12
|
|
25
13
|
attr_reader :id, :clock
|
26
14
|
|
27
|
-
def initialize(id)
|
15
|
+
def initialize(id, clock: CLOCK)
|
28
16
|
@id = id
|
29
|
-
@clock =
|
17
|
+
@clock = clock
|
30
18
|
end
|
31
19
|
|
32
20
|
def start(event_id, payload)
|
@@ -16,7 +16,7 @@ module Dry
|
|
16
16
|
QUERY_STRING = "QUERY_STRING"
|
17
17
|
|
18
18
|
START_MSG = %(Started %s "%s" for %s at %s)
|
19
|
-
STOP_MSG = %(Finished %s "%s" for %s in %
|
19
|
+
STOP_MSG = %(Finished %s "%s" for %s in %s [Status: %s]\n)
|
20
20
|
QUERY_MSG = %( Query parameters )
|
21
21
|
FILTERED = "[FILTERED]"
|
22
22
|
|
@@ -14,12 +14,13 @@ module Dry
|
|
14
14
|
|
15
15
|
attr_reader :app, :notifications
|
16
16
|
|
17
|
-
def initialize(*args)
|
17
|
+
def initialize(*args, clock: CLOCK)
|
18
18
|
@notifications, @app = *args
|
19
|
+
@clock = clock
|
19
20
|
end
|
20
21
|
|
21
|
-
def new(app, *_args, &_block)
|
22
|
-
self.class.new(notifications, app)
|
22
|
+
def new(app, *_args, clock: @clock, &_block)
|
23
|
+
self.class.new(notifications, app, clock: clock)
|
23
24
|
end
|
24
25
|
|
25
26
|
def on(event_id, &block)
|
@@ -32,7 +33,7 @@ module Dry
|
|
32
33
|
|
33
34
|
def call(env)
|
34
35
|
notifications.start(REQUEST_START, env: env)
|
35
|
-
response, time =
|
36
|
+
response, time = @clock.measure { app.call(env) }
|
36
37
|
notifications.stop(REQUEST_STOP, env: env, time: time, status: response[0])
|
37
38
|
response
|
38
39
|
end
|
data/lib/dry/monitor/version.rb
CHANGED
data/lib/dry/monitor.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "zeitwerk"
|
4
|
+
|
4
5
|
require "dry/core"
|
5
6
|
require "dry/configurable"
|
6
7
|
require "dry/monitor/version"
|
@@ -19,6 +20,7 @@ module Dry
|
|
19
20
|
require "dry/monitor/sql/logger"
|
20
21
|
end
|
21
22
|
|
23
|
+
# @api private
|
22
24
|
def self.loader
|
23
25
|
@loader ||= Zeitwerk::Loader.new.tap do |loader|
|
24
26
|
root = File.expand_path("..", __dir__)
|
@@ -34,7 +36,7 @@ module Dry
|
|
34
36
|
loader.inflector.inflect "sql" => "SQL"
|
35
37
|
end
|
36
38
|
end
|
39
|
+
|
40
|
+
loader.setup
|
37
41
|
end
|
38
42
|
end
|
39
|
-
|
40
|
-
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: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-configurable
|
@@ -16,60 +16,60 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
20
|
-
- - "
|
19
|
+
version: '1.0'
|
20
|
+
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: '2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0
|
30
|
-
- - "
|
29
|
+
version: '1.0'
|
30
|
+
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: '2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: dry-core
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0
|
40
|
-
- - "
|
39
|
+
version: '1.0'
|
40
|
+
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '2'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '0
|
50
|
-
- - "
|
49
|
+
version: '1.0'
|
50
|
+
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
52
|
+
version: '2'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: dry-events
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '0
|
60
|
-
- - "
|
59
|
+
version: '1.0'
|
60
|
+
- - "<"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: '2'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0
|
70
|
-
- - "
|
69
|
+
version: '1.0'
|
70
|
+
- - "<"
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version:
|
72
|
+
version: '2'
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: bundler
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,20 +84,6 @@ dependencies:
|
|
84
84
|
- - ">="
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '0'
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: rake
|
89
|
-
requirement: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
- - ">="
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
|
-
type: :development
|
95
|
-
prerelease: false
|
96
|
-
version_requirements: !ruby/object:Gem::Requirement
|
97
|
-
requirements:
|
98
|
-
- - ">="
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: '0'
|
101
87
|
- !ruby/object:Gem::Dependency
|
102
88
|
name: rouge
|
103
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,6 +131,7 @@ files:
|
|
145
131
|
- dry-monitor.gemspec
|
146
132
|
- lib/dry-monitor.rb
|
147
133
|
- lib/dry/monitor.rb
|
134
|
+
- lib/dry/monitor/clock.rb
|
148
135
|
- lib/dry/monitor/logger.rb
|
149
136
|
- lib/dry/monitor/notifications.rb
|
150
137
|
- lib/dry/monitor/rack/logger.rb
|