dry-monitor 0.7.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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