-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add
Metrics::Config
which includes prepare
hook.
- Loading branch information
Showing
10 changed files
with
108 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# frozen_string_literal: true | ||
|
||
# Released under the MIT License. | ||
# Copyright, 2020-2024, by Samuel Williams. | ||
|
||
# Update the project documentation with the new version number. | ||
# | ||
# @parameter version [String] The new version number. | ||
def after_gem_release_version_increment(version) | ||
context["releases:update"].call(version) | ||
context["utopia:project:readme:update"].call | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# frozen_string_literal: true | ||
|
||
# Released under the MIT License. | ||
# Copyright, 2024, by Samuel Williams. | ||
|
||
module Metrics | ||
# Represents a configuration for the metrics library. | ||
class Config | ||
DEFAULT_PATH = ENV.fetch("METRICS_CONFIG_DEFAULT_PATH", "config/metrics.rb") | ||
|
||
# Load the configuration from the given path. | ||
# @parameter path [String] The path to the configuration file. | ||
# @returns [Config] The loaded configuration. | ||
def self.load(path) | ||
config = self.new | ||
|
||
if File.exist?(path) | ||
config.instance_eval(File.read(path), path) | ||
end | ||
|
||
return config | ||
end | ||
|
||
# Load the default configuration. | ||
# @returns [Config] The default configuration. | ||
def self.default | ||
@default ||= self.load(DEFAULT_PATH) | ||
end | ||
|
||
# Prepare the backend, e.g. by loading additional libraries or instrumentation. | ||
def prepare | ||
end | ||
|
||
# Require a specific metrics backend implementation. | ||
def require_backend(env = ENV) | ||
if backend = env['METRICS_BACKEND'] | ||
begin | ||
if require(backend) | ||
Metrics.extend(Backend::Interface) | ||
|
||
self.prepare | ||
|
||
return true | ||
end | ||
rescue LoadError => error | ||
warn "Unable to load metrics backend: #{backend.inspect}!" | ||
end | ||
end | ||
|
||
return false | ||
end | ||
|
||
# Load the default configuration. | ||
DEFAULT = self.default | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Releases | ||
|
||
## Unreleased | ||
|
||
### Introduce `Metrics::Config` to Expose `prepare` Hook | ||
|
||
The `metrics` gem uses aspect-oriented programming to wrap existing methods to emit metrics. However, while there are some reasonable defaults for emitting metrics, it can be useful to customize the behavior and level of detail. To that end, the `metrics` gem now optionally loads a `config/metrics.rb` which includes a `prepare` hook that can be used to load additional providers. | ||
|
||
``` ruby | ||
# config/metrics.rb | ||
|
||
def prepare | ||
require 'metrics/provider/async' | ||
require 'metrics/provider/async/http' | ||
end | ||
``` | ||
|
||
The `prepare` method is called immediately after the metrics backend is loaded. You can require any provider you want in this file, or even add your own custom providers. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters