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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85738f938dcede38fc7ce87e0370b28d6007a4bc623add02b36266c92436ddc4
4
- data.tar.gz: ff09a85ea8d421a6af32c711d2c84a62164f868462b2676cb5b644af6b5a4dcb
3
+ metadata.gz: e5f22e78dd92f5dd4177daec60c9d8bab1583df9478f4741780706c354607041
4
+ data.tar.gz: fe37f4deef05a9eb250d1afe730dffe4f803e22252a4b1ebef54a254f725a1dd
5
5
  SHA512:
6
- metadata.gz: 57421c674b4a278f86ec556e84f09778400e30767cce50f5190dc0ddc1403f9c9cbb570fb45b7a481f2aecce325c52cc67f6ba0bdec55a8d58c92354845a1f3e
7
- data.tar.gz: 3cd559b457cab3d252875a9464b9cc24d96e486f56f4ae31c50e1003aa81d7d63306ee77daa33116bf780c70a138f3c6b092b3796de9ed5e02bde7c5bc822c58
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
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015-2020 dry-rb team
3
+ Copyright (c) 2015-2021 dry-rb team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
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=master)][inchpages]
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](http://dry-rb.org/gems/dry-monitor)
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 >= `2.4`
25
- * jruby >= `9.2`
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
- lib = File.expand_path('lib', __dir__)
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 'dry/monitor/version'
7
+ require "dry/monitor/version"
7
8
 
8
9
  Gem::Specification.new do |spec|
9
- spec.name = 'dry-monitor'
10
+ spec.name = "dry-monitor"
10
11
  spec.authors = ["Piotr Solnica"]
11
12
  spec.email = ["piotr.solnica@gmail.com"]
12
- spec.license = 'MIT'
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 = 'https://dry-rb.org/gems/dry-monitor'
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 = 'bin'
20
+ spec.bindir = "bin"
20
21
  spec.executables = []
21
- spec.require_paths = ['lib']
22
+ spec.require_paths = ["lib"]
22
23
 
23
- spec.metadata['allowed_push_host'] = 'https://rubygems.org'
24
- spec.metadata['changelog_uri'] = 'https://github.com/dry-rb/dry-monitor/blob/master/CHANGELOG.md'
25
- spec.metadata['source_code_uri'] = 'https://github.com/dry-rb/dry-monitor'
26
- spec.metadata['bug_tracker_uri'] = 'https://github.com/dry-rb/dry-monitor/issues'
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.4.0"
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.5"
32
- spec.add_runtime_dependency "dry-core", "~> 0.4"
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 { yield } if block_given?
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) do |env:|
35
- log_start_request(env)
36
- end
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(request, status, time)
51
+ def log_stop_request(env:, status:, time:)
63
52
  logger.info STOP_MSG % [
64
- request[REQUEST_METHOD],
65
- request[PATH_INFO],
66
- request[REMOTE_ADDR],
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, nil
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) do |time:, name:, query:|
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, name, query)
52
+ def log_query(time:, name:, query:)
62
53
  logger.info template % [name.inspect, time, colorizer.call(query)]
63
54
  end
64
55
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Monitor
5
- VERSION = "0.3.2"
5
+ VERSION = "0.6.0"
6
6
  end
7
7
  end
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
- require "dry/monitor/rack/logger"
14
+
15
+ Dry::Monitor::Rack::Logger
14
16
  end
15
17
 
16
18
  register_extension(:sql) do
17
- require "dry/monitor/sql/logger"
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.3.2
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: 2020-04-09 00:00:00.000000000 Z
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.5'
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.5'
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.4'
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.4'
49
+ version: '0.5'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0.5'
41
53
  - !ruby/object:Gem::Dependency
42
- name: dry-equalizer
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: dry-events
68
+ name: zeitwerk
57
69
  requirement: !ruby/object:Gem::Requirement
58
70
  requirements:
59
71
  - - "~>"
60
72
  - !ruby/object:Gem::Version
61
- version: '0.2'
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: '0.2'
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/master/CHANGELOG.md
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.4.0
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.0.3
187
+ rubygems_version: 3.1.6
177
188
  signing_key:
178
189
  specification_version: 4
179
190
  summary: Monitoring and instrumentation APIs
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dry/core/constants"
4
-
5
- module Dry
6
- module Monitor
7
- include Dry::Core::Constants
8
- end
9
- end