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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ef0810179fb857fd4c8196793138aa1748b3df840076c1de1d553524e6cd0b7
4
- data.tar.gz: 83f406af00796cc04abbb203ff76013d5a1f6ac84efa50a28820ca5ad9b40fcf
3
+ metadata.gz: afa00138c4dc7ce920300c3d5ea5e88bfe95a32d8a195b55398a5ae8896c734a
4
+ data.tar.gz: d2486b5a1dbdb10630969e46c52cf0b3e4c2db66cf1576a64a6dc9486e6c6d93
5
5
  SHA512:
6
- metadata.gz: 640410786d3338d15546157b1816117a02ebd997f2900dcecf6b6e263e8c5cbf999e794e73eb4f19da1bff6d663b691635834316a5ce750c6e07381ef3084263
7
- data.tar.gz: 823d1e997d6db90dd038211de62abca709b3d5990b0f55dc6f60d0c0f7c64ec17ead85f2d7a85b0efc909d5df6060e5d19adfe50cd07bde904e5e488a539b712
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.16", ">= 0.16.0"
33
- spec.add_runtime_dependency "dry-core", "~> 0.9", ">= 0.9"
34
- spec.add_runtime_dependency "dry-events", "~> 0.4", ">= 0.4.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 = 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 %sms [Status: %s]\n)
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 = CLOCK.measure { app.call(env) }
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Monitor
5
- VERSION = "0.7.0"
5
+ VERSION = "1.0.1"
6
6
  end
7
7
  end
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.7.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-10-15 00:00:00.000000000 Z
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.16'
20
- - - ">="
19
+ version: '1.0'
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 0.16.0
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.16'
30
- - - ">="
29
+ version: '1.0'
30
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.16.0
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.9'
40
- - - ">="
39
+ version: '1.0'
40
+ - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '0.9'
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.9'
50
- - - ">="
49
+ version: '1.0'
50
+ - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '0.9'
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.4'
60
- - - ">="
59
+ version: '1.0'
60
+ - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: 0.4.0
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.4'
70
- - - ">="
69
+ version: '1.0'
70
+ - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: 0.4.0
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