active_metrics 0.1.0 → 0.1.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 +5 -5
- data/Dockerfile +49 -49
- data/Gemfile.lock +3 -3
- data/README.md +7 -1
- data/active_metrics.gemspec +1 -2
- data/docker-compose.yml +5 -5
- data/lib/active_metrics/collector.rb +57 -49
- data/lib/active_metrics/instrumentable.rb +66 -66
- data/lib/active_metrics/version.rb +1 -1
- metadata +21 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a99f62aed5e38e762fcaba320d21fce604fb938d6e5d88d7149c427c4e631522
|
4
|
+
data.tar.gz: 1c41b03b70bee9233f393d56928bf27a7d1ccdbc73fe15ad26463e18a30adc6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 819bfc8020b1a0a1a73d9bcf71a9ac6bde6221e8f5e9a59e2f209f3df04aa92a30fa8ec7ef852dee7099326cfecd29a779b9af4b0f23306e466564e2894456ae
|
7
|
+
data.tar.gz: 541ec4d9652984784e88cc474e9e495926bba7c43899d698e2e55e3d4c4fb7160278ed083dc002cf5ca8566ebf41091ce48479413897e7a08097401123f57399
|
data/Dockerfile
CHANGED
@@ -1,50 +1,50 @@
|
|
1
|
-
FROM ruby:2.5.0
|
2
|
-
|
3
|
-
# Bundler options
|
4
|
-
#
|
5
|
-
# The default value is taken from Travis's build options, so they should be
|
6
|
-
# good enough for most cases. For development, be sure to set a blank default
|
7
|
-
# in docker-compose.override.yml.
|
8
|
-
ARG BUNDLER_OPTS="--jobs=3 \
|
9
|
-
--retry=3 \
|
10
|
-
--deployment"
|
11
|
-
|
12
|
-
# The home directory of the gem.
|
13
|
-
#
|
14
|
-
# During development, make sure that the APP_DIR environment variable is
|
15
|
-
# identical to the variable in your docker-compose.override.yml file,
|
16
|
-
# otherwise things might not work as expected.
|
17
|
-
ENV APP_DIR="/opt/active_metrics"
|
18
|
-
|
19
|
-
# Create a non-root user
|
20
|
-
RUN groupadd -r travis \
|
21
|
-
&& useradd -m -r -g travis travis
|
22
|
-
RUN mkdir -p ${APP_DIR} \
|
23
|
-
&& chown -R travis:travis ${APP_DIR}
|
24
|
-
|
25
|
-
# Move the the application folder to perform all the following tasks.
|
26
|
-
WORKDIR ${APP_DIR}
|
27
|
-
# Use the non-root user to perform any commands from this point forward.
|
28
|
-
#
|
29
|
-
# NOTE: The COPY command requires the --chown flag set otherwise it will
|
30
|
-
# copy things as root.
|
31
|
-
USER travis
|
32
|
-
|
33
|
-
# Copy the gem's gemspec file so `bundle install` can run when the
|
34
|
-
# container is initialized.
|
35
|
-
#
|
36
|
-
# The added benefit is that Docker will cache this file and will not trigger
|
37
|
-
# the bundle install unless the gemspec changed on the filesystem.
|
38
|
-
#
|
39
|
-
# NOTE: If the command fails because of the --chown flag, make sure you have a
|
40
|
-
# recent stable version of Docker.
|
41
|
-
COPY --chown=travis:travis . ./
|
42
|
-
|
43
|
-
|
44
|
-
RUN bundle install ${BUNDLER_OPTS}
|
45
|
-
|
46
|
-
# Copy over the files, in case the Docker Compose file does not specify a
|
47
|
-
# mount point.
|
48
|
-
COPY --chown=travis:travis . ./
|
49
|
-
|
1
|
+
FROM ruby:2.5.0
|
2
|
+
|
3
|
+
# Bundler options
|
4
|
+
#
|
5
|
+
# The default value is taken from Travis's build options, so they should be
|
6
|
+
# good enough for most cases. For development, be sure to set a blank default
|
7
|
+
# in docker-compose.override.yml.
|
8
|
+
ARG BUNDLER_OPTS="--jobs=3 \
|
9
|
+
--retry=3 \
|
10
|
+
--deployment"
|
11
|
+
|
12
|
+
# The home directory of the gem.
|
13
|
+
#
|
14
|
+
# During development, make sure that the APP_DIR environment variable is
|
15
|
+
# identical to the variable in your docker-compose.override.yml file,
|
16
|
+
# otherwise things might not work as expected.
|
17
|
+
ENV APP_DIR="/opt/active_metrics"
|
18
|
+
|
19
|
+
# Create a non-root user
|
20
|
+
RUN groupadd -r travis \
|
21
|
+
&& useradd -m -r -g travis travis
|
22
|
+
RUN mkdir -p ${APP_DIR} \
|
23
|
+
&& chown -R travis:travis ${APP_DIR}
|
24
|
+
|
25
|
+
# Move the the application folder to perform all the following tasks.
|
26
|
+
WORKDIR ${APP_DIR}
|
27
|
+
# Use the non-root user to perform any commands from this point forward.
|
28
|
+
#
|
29
|
+
# NOTE: The COPY command requires the --chown flag set otherwise it will
|
30
|
+
# copy things as root.
|
31
|
+
USER travis
|
32
|
+
|
33
|
+
# Copy the gem's gemspec file so `bundle install` can run when the
|
34
|
+
# container is initialized.
|
35
|
+
#
|
36
|
+
# The added benefit is that Docker will cache this file and will not trigger
|
37
|
+
# the bundle install unless the gemspec changed on the filesystem.
|
38
|
+
#
|
39
|
+
# NOTE: If the command fails because of the --chown flag, make sure you have a
|
40
|
+
# recent stable version of Docker.
|
41
|
+
COPY --chown=travis:travis . ./
|
42
|
+
|
43
|
+
|
44
|
+
RUN bundle install ${BUNDLER_OPTS}
|
45
|
+
|
46
|
+
# Copy over the files, in case the Docker Compose file does not specify a
|
47
|
+
# mount point.
|
48
|
+
COPY --chown=travis:travis . ./
|
49
|
+
|
50
50
|
CMD ["bash"]
|
data/Gemfile.lock
CHANGED
@@ -23,7 +23,7 @@ GEM
|
|
23
23
|
pry (0.11.1)
|
24
24
|
coderay (~> 1.1.0)
|
25
25
|
method_source (~> 0.9.0)
|
26
|
-
rake (
|
26
|
+
rake (13.0.1)
|
27
27
|
simplecov (0.15.1)
|
28
28
|
docile (~> 1.1.0)
|
29
29
|
json (>= 1.8, < 3)
|
@@ -42,8 +42,8 @@ DEPENDENCIES
|
|
42
42
|
bundler (~> 1.16)
|
43
43
|
minitest (~> 5.0)
|
44
44
|
pry (~> 0.11)
|
45
|
-
rake (~>
|
45
|
+
rake (~> 13.0)
|
46
46
|
simplecov (~> 0.15)
|
47
47
|
|
48
48
|
BUNDLED WITH
|
49
|
-
1.
|
49
|
+
1.17.2
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ require 'active_metrics'
|
|
28
28
|
class Foo
|
29
29
|
|
30
30
|
include ActiveMetrics::Instrumentable
|
31
|
-
|
31
|
+
|
32
32
|
def bar
|
33
33
|
count 'method.bar'
|
34
34
|
end
|
@@ -44,6 +44,12 @@ Available methods:
|
|
44
44
|
|
45
45
|
Be mindful of any kind of conflicts when including the module in your class.
|
46
46
|
|
47
|
+
### Disabling the metrics
|
48
|
+
|
49
|
+
For various environments (development and QA), the metrics can be a bit too
|
50
|
+
verbose and have very little value. In those cases, the metrics can be disabled
|
51
|
+
using by using the `SILENT_METRICS=1` environment variable.
|
52
|
+
|
47
53
|
## Contributing
|
48
54
|
|
49
55
|
Bug reports and pull requests are welcome on GitHub at [https://github.com/andreimaxim/active_metrics.]()
|
data/active_metrics.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'active_metrics/version'
|
@@ -21,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
21
20
|
spec.require_paths = ['lib']
|
22
21
|
|
23
22
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
24
|
-
spec.add_development_dependency 'rake', '~>
|
23
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
25
24
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
26
25
|
spec.add_development_dependency 'simplecov', '~> 0.15'
|
27
26
|
spec.add_development_dependency 'pry', '~> 0.11'
|
data/docker-compose.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
version: '3'
|
2
|
-
|
3
|
-
services:
|
4
|
-
|
5
|
-
gem:
|
1
|
+
version: '3'
|
2
|
+
|
3
|
+
services:
|
4
|
+
|
5
|
+
gem:
|
6
6
|
build: .
|
@@ -1,49 +1,57 @@
|
|
1
|
-
module ActiveMetrics
|
2
|
-
class Collector
|
3
|
-
|
4
|
-
PREFIX = 'com.active_metrics'.freeze
|
5
|
-
|
6
|
-
class << self
|
7
|
-
|
8
|
-
#
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
#
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
1
|
+
module ActiveMetrics
|
2
|
+
class Collector
|
3
|
+
|
4
|
+
PREFIX = 'com.active_metrics'.freeze
|
5
|
+
|
6
|
+
class << self
|
7
|
+
|
8
|
+
# Should the metrics be silent?
|
9
|
+
#
|
10
|
+
# Useful especially in QA or development environments, where you'll
|
11
|
+
# might not want your logs to be filled with various metrics.
|
12
|
+
def silent?
|
13
|
+
[1, '1', 'true'].include?(ENV['SILENT_METRICS'])
|
14
|
+
end
|
15
|
+
|
16
|
+
# Start subscribing to the metrics-related events.
|
17
|
+
def attach
|
18
|
+
ActiveSupport::Notifications.subscribe(/#{PREFIX}/i) do |name, _, _, _, data|
|
19
|
+
deliver(name, data)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Deliver a metric to Librato
|
24
|
+
#
|
25
|
+
# According to the Heroku DevCenter there is already a tight integration
|
26
|
+
# between Heroku logs and Librato so simply using `$stdout.puts` will be
|
27
|
+
# enough, as long as a specific format is used.
|
28
|
+
#
|
29
|
+
# @param name [String] The name of the event being measured
|
30
|
+
# @param data [Hash] a Hash with type of metric and the value to be recorded
|
31
|
+
def deliver(name, data = {})
|
32
|
+
key = name.gsub(PREFIX, '')
|
33
|
+
value = data[:value]
|
34
|
+
metric = data[:metric]
|
35
|
+
|
36
|
+
$stdout.puts "#{metric}##{key}=#{value}" unless silent?
|
37
|
+
end
|
38
|
+
|
39
|
+
# Record an event
|
40
|
+
#
|
41
|
+
# @param event [String] The name of the event
|
42
|
+
# @param payload [Hash] A hash that contains the event-related data.
|
43
|
+
def record(event, payload = {})
|
44
|
+
# Add a prefix to all events so things broadcasted using this method
|
45
|
+
# will not get picked up by possibly other `ActiveSupport::Notifications`
|
46
|
+
# subscribers.
|
47
|
+
name = "#{PREFIX}#{event}"
|
48
|
+
|
49
|
+
if block_given?
|
50
|
+
ActiveSupport::Notifications.instrument(name, payload) { yield }
|
51
|
+
else
|
52
|
+
ActiveSupport::Notifications.instrument(name, payload)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -1,67 +1,67 @@
|
|
1
|
-
module ActiveMetrics
|
2
|
-
##
|
3
|
-
# Custom metrics for Librato
|
4
|
-
module Instrumentable
|
5
|
-
|
6
|
-
# Count log lines are used to submit increments to Librato.
|
7
|
-
#
|
8
|
-
# You can submit increments as frequently as desired and every minute the
|
9
|
-
# current total will be flushed to Librato and reset to zero.
|
10
|
-
#
|
11
|
-
# @param event [String] The name of the event
|
12
|
-
# @param number [Integer] The number to increment the current count (defaults to 1)
|
13
|
-
def count(event, number = 1)
|
14
|
-
ActiveMetrics::Collector.record(event, { metric: 'count', value: number })
|
15
|
-
end
|
16
|
-
|
17
|
-
# Measure log lines are used to submit individual measurements that comprise
|
18
|
-
# a statistical distribution. The most common use case are timings i.e.
|
19
|
-
# latency measurements, but it can also be used to represent non-temporal
|
20
|
-
# distributions such as counts.
|
21
|
-
#
|
22
|
-
# You can submit as many measures as you’d like (typically they are
|
23
|
-
# submitted per-request) and every minute Librato will calculate/record a
|
24
|
-
# complete set of summary statistics over the measures submitted in that
|
25
|
-
# interval.
|
26
|
-
#
|
27
|
-
# The `measure` method also accepts a block of code which will automatically
|
28
|
-
# measure the amount of time spent running that block:
|
29
|
-
#
|
30
|
-
# measure 'foo.bar.baz' do
|
31
|
-
# Foo.bar #=> 'baz'
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
# For convenience, when `measure` is used with a block it will return the
|
35
|
-
# value returned by the block.
|
36
|
-
#
|
37
|
-
# @param event [String] The name of the event
|
38
|
-
# @param value [Integer, String] The value measured.
|
39
|
-
def measure(event, value = 0)
|
40
|
-
if block_given?
|
41
|
-
time = Time.now
|
42
|
-
# Store the value returned by the block for future reference
|
43
|
-
value = yield
|
44
|
-
delta = Time.now - time
|
45
|
-
|
46
|
-
ActiveMetrics::Collector.record(event, { metric: 'measure', value: delta })
|
47
|
-
|
48
|
-
value
|
49
|
-
else
|
50
|
-
ActiveMetrics::Collector.record(event, { metric: 'measure', value: value })
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# Sample metrics are used to convey simple key/numerical value pairs when
|
55
|
-
# you are already calculating some kind of summary statistic in your app and
|
56
|
-
# merely need a simple transport mechanism to Librato.
|
57
|
-
#
|
58
|
-
# Typically you would submit sample metrics on some periodic tick and set
|
59
|
-
# said period on the metric in Librato.
|
60
|
-
#
|
61
|
-
# @param key [String] The name of the sample
|
62
|
-
# @param value [Object] The value of the sample
|
63
|
-
def sample(key, value)
|
64
|
-
ActiveMetrics::Collector.record(key, { metric: 'sample', value: value })
|
65
|
-
end
|
66
|
-
end
|
1
|
+
module ActiveMetrics
|
2
|
+
##
|
3
|
+
# Custom metrics for Librato
|
4
|
+
module Instrumentable
|
5
|
+
|
6
|
+
# Count log lines are used to submit increments to Librato.
|
7
|
+
#
|
8
|
+
# You can submit increments as frequently as desired and every minute the
|
9
|
+
# current total will be flushed to Librato and reset to zero.
|
10
|
+
#
|
11
|
+
# @param event [String] The name of the event
|
12
|
+
# @param number [Integer] The number to increment the current count (defaults to 1)
|
13
|
+
def count(event, number = 1)
|
14
|
+
ActiveMetrics::Collector.record(event, { metric: 'count', value: number })
|
15
|
+
end
|
16
|
+
|
17
|
+
# Measure log lines are used to submit individual measurements that comprise
|
18
|
+
# a statistical distribution. The most common use case are timings i.e.
|
19
|
+
# latency measurements, but it can also be used to represent non-temporal
|
20
|
+
# distributions such as counts.
|
21
|
+
#
|
22
|
+
# You can submit as many measures as you’d like (typically they are
|
23
|
+
# submitted per-request) and every minute Librato will calculate/record a
|
24
|
+
# complete set of summary statistics over the measures submitted in that
|
25
|
+
# interval.
|
26
|
+
#
|
27
|
+
# The `measure` method also accepts a block of code which will automatically
|
28
|
+
# measure the amount of time spent running that block:
|
29
|
+
#
|
30
|
+
# measure 'foo.bar.baz' do
|
31
|
+
# Foo.bar #=> 'baz'
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# For convenience, when `measure` is used with a block it will return the
|
35
|
+
# value returned by the block.
|
36
|
+
#
|
37
|
+
# @param event [String] The name of the event
|
38
|
+
# @param value [Integer, String] The value measured.
|
39
|
+
def measure(event, value = 0)
|
40
|
+
if block_given?
|
41
|
+
time = Time.now
|
42
|
+
# Store the value returned by the block for future reference
|
43
|
+
value = yield
|
44
|
+
delta = Time.now - time
|
45
|
+
|
46
|
+
ActiveMetrics::Collector.record(event, { metric: 'measure', value: delta })
|
47
|
+
|
48
|
+
value
|
49
|
+
else
|
50
|
+
ActiveMetrics::Collector.record(event, { metric: 'measure', value: value })
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Sample metrics are used to convey simple key/numerical value pairs when
|
55
|
+
# you are already calculating some kind of summary statistic in your app and
|
56
|
+
# merely need a simple transport mechanism to Librato.
|
57
|
+
#
|
58
|
+
# Typically you would submit sample metrics on some periodic tick and set
|
59
|
+
# said period on the metric in Librato.
|
60
|
+
#
|
61
|
+
# @param key [String] The name of the sample
|
62
|
+
# @param value [Object] The value of the sample
|
63
|
+
def sample(key, value)
|
64
|
+
ActiveMetrics::Collector.record(key, { metric: 'sample', value: value })
|
65
|
+
end
|
66
|
+
end
|
67
67
|
end
|
metadata
CHANGED
@@ -1,100 +1,100 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrei Maxim
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - "~>"
|
17
18
|
- !ruby/object:Gem::Version
|
18
19
|
version: '1.16'
|
19
|
-
name: bundler
|
20
|
-
prerelease: false
|
21
20
|
type: :development
|
21
|
+
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
33
|
-
name: rake
|
34
|
-
prerelease: false
|
33
|
+
version: '13.0'
|
35
34
|
type: :development
|
35
|
+
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
45
|
- - "~>"
|
45
46
|
- !ruby/object:Gem::Version
|
46
47
|
version: '5.0'
|
47
|
-
name: minitest
|
48
|
-
prerelease: false
|
49
48
|
type: :development
|
49
|
+
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
59
|
- - "~>"
|
59
60
|
- !ruby/object:Gem::Version
|
60
61
|
version: '0.15'
|
61
|
-
name: simplecov
|
62
|
-
prerelease: false
|
63
62
|
type: :development
|
63
|
+
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.15'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
70
71
|
requirement: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
72
73
|
- - "~>"
|
73
74
|
- !ruby/object:Gem::Version
|
74
75
|
version: '0.11'
|
75
|
-
name: pry
|
76
|
-
prerelease: false
|
77
76
|
type: :development
|
77
|
+
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.11'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
+
name: activesupport
|
84
85
|
requirement: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
87
|
- - ">="
|
87
88
|
- !ruby/object:Gem::Version
|
88
89
|
version: 3.0.0
|
89
|
-
name: activesupport
|
90
|
-
prerelease: false
|
91
90
|
type: :runtime
|
91
|
+
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 3.0.0
|
97
|
-
description:
|
97
|
+
description:
|
98
98
|
email:
|
99
99
|
- andrei@andreimaxim.ro
|
100
100
|
executables: []
|
@@ -122,7 +122,7 @@ homepage: https://github.com/andreimaxim/active_metrics
|
|
122
122
|
licenses:
|
123
123
|
- MIT
|
124
124
|
metadata: {}
|
125
|
-
post_install_message:
|
125
|
+
post_install_message:
|
126
126
|
rdoc_options: []
|
127
127
|
require_paths:
|
128
128
|
- lib
|
@@ -137,9 +137,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
requirements: []
|
140
|
-
|
141
|
-
|
142
|
-
signing_key:
|
140
|
+
rubygems_version: 3.0.3
|
141
|
+
signing_key:
|
143
142
|
specification_version: 4
|
144
143
|
summary: Metrics based on ActiveSupport::Notifications
|
145
144
|
test_files: []
|