active_metrics 0.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 +7 -0
- data/.gitignore +9 -0
- data/.travis.yml +13 -0
- data/Dockerfile +62 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +49 -0
- data/LICENSE.txt +21 -0
- data/README.md +52 -0
- data/Rakefile +10 -0
- data/active_metrics.gemspec +38 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/certs/andreimaxim.pem +21 -0
- data/docker-compose.yml +6 -0
- data/lib/active_metrics/collector.rb +49 -0
- data/lib/active_metrics/instrumentable.rb +46 -0
- data/lib/active_metrics/version.rb +3 -0
- data/lib/active_metrics.rb +10 -0
- metadata +146 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6ed1297fe6d975516ee3607c0adb3d4bb2f26fe8
|
4
|
+
data.tar.gz: 86f76bc841aa9eddf53f2e6c13f393dc218987f3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 91489920993ab225dda277c72c6b0d43a97dade84122c4e15085cef3c53c506bdc6029b44c8a7869bab34beaa6328f41e7cfc7b09172782a5f745ebe9966c094
|
7
|
+
data.tar.gz: 63dbabc8ddba27fa7be55eace95a920fa8590c9e7882fcb3831484449d25b778953b8825f5abecf33e31d2aa287ddca5a06e0c5cc7cc9dd8694e7cdf5683c754
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- 2.4.2
|
5
|
+
before_install: gem install bundler -v 1.16.0
|
6
|
+
before_script:
|
7
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
8
|
+
- chmod +x ./cc-test-reporter
|
9
|
+
- ./cc-test-reporter before-build
|
10
|
+
script:
|
11
|
+
- bundle exec rake
|
12
|
+
after_script:
|
13
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/Dockerfile
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
FROM ruby:2.4.2-slim
|
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
|
+
# Install required packages
|
20
|
+
RUN apt-get update -y \
|
21
|
+
&& apt-get install -y --no-install-recommends \
|
22
|
+
git-core \
|
23
|
+
build-essential \
|
24
|
+
libffi-dev \
|
25
|
+
libxml2-dev \
|
26
|
+
libssl-dev \
|
27
|
+
libcurl4-gnutls-dev \
|
28
|
+
apt-utils \
|
29
|
+
&& rm -rf /var/lib/apt/lists/*
|
30
|
+
|
31
|
+
# Create a non-root user
|
32
|
+
RUN groupadd -r travis \
|
33
|
+
&& useradd -m -r -g travis travis
|
34
|
+
RUN mkdir -p ${APP_DIR} \
|
35
|
+
&& chown -R travis:travis ${APP_DIR}
|
36
|
+
|
37
|
+
# Move the the application folder to perform all the following tasks.
|
38
|
+
WORKDIR ${APP_DIR}
|
39
|
+
# Use the non-root user to perform any commands from this point forward.
|
40
|
+
#
|
41
|
+
# NOTE: The COPY command requires the --chown flag set otherwise it will
|
42
|
+
# copy things as root.
|
43
|
+
USER travis
|
44
|
+
|
45
|
+
# Copy the gem's gemspec file so `bundle install` can run when the
|
46
|
+
# container is initialized.
|
47
|
+
#
|
48
|
+
# The added benefit is that Docker will cache this file and will not trigger
|
49
|
+
# the bundle install unless the gemspec changed on the filesystem.
|
50
|
+
#
|
51
|
+
# NOTE: If the command fails because of the --chown flag, make sure you have a
|
52
|
+
# recent stable version of Docker.
|
53
|
+
COPY --chown=travis:travis . ./
|
54
|
+
|
55
|
+
|
56
|
+
RUN bundle install ${BUNDLER_OPTS}
|
57
|
+
|
58
|
+
# Copy over the files, in case the Docker Compose file does not specify a
|
59
|
+
# mount point.
|
60
|
+
COPY --chown=travis:travis . ./
|
61
|
+
|
62
|
+
CMD ["bash"]
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
active_metrics (0.0.1)
|
5
|
+
activesupport (>= 3.0.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activesupport (5.1.4)
|
11
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
12
|
+
i18n (~> 0.7)
|
13
|
+
minitest (~> 5.1)
|
14
|
+
tzinfo (~> 1.1)
|
15
|
+
coderay (1.1.2)
|
16
|
+
concurrent-ruby (1.0.5)
|
17
|
+
docile (1.1.5)
|
18
|
+
i18n (0.9.3)
|
19
|
+
concurrent-ruby (~> 1.0)
|
20
|
+
json (2.1.0)
|
21
|
+
method_source (0.9.0)
|
22
|
+
minitest (5.11.3)
|
23
|
+
pry (0.11.1)
|
24
|
+
coderay (~> 1.1.0)
|
25
|
+
method_source (~> 0.9.0)
|
26
|
+
rake (10.5.0)
|
27
|
+
simplecov (0.15.1)
|
28
|
+
docile (~> 1.1.0)
|
29
|
+
json (>= 1.8, < 3)
|
30
|
+
simplecov-html (~> 0.10.0)
|
31
|
+
simplecov-html (0.10.2)
|
32
|
+
thread_safe (0.3.6)
|
33
|
+
tzinfo (1.2.5)
|
34
|
+
thread_safe (~> 0.1)
|
35
|
+
|
36
|
+
PLATFORMS
|
37
|
+
ruby
|
38
|
+
x64-mingw32
|
39
|
+
|
40
|
+
DEPENDENCIES
|
41
|
+
active_metrics!
|
42
|
+
bundler (~> 1.16)
|
43
|
+
minitest (~> 5.0)
|
44
|
+
pry (~> 0.11)
|
45
|
+
rake (~> 10.0)
|
46
|
+
simplecov (~> 0.15)
|
47
|
+
|
48
|
+
BUNDLED WITH
|
49
|
+
1.16.1
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018 Andrei Maxim
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# ActiveMetrics
|
2
|
+
|
3
|
+
[](https://travis-ci.org/andreimaxim/active_metrics)
|
4
|
+
[](https://codeclimate.com/github/andreimaxim/active_metrics/maintainability)
|
5
|
+
[](https://codeclimate.com/github/andreimaxim/active_metrics/test_coverage)
|
6
|
+
|
7
|
+
|
8
|
+
A gem to simplify how metrics are being collected in Ruby-based applications.
|
9
|
+
|
10
|
+
As of now, the code is tested and optimized for usage on Heroku with the Librato
|
11
|
+
add-on and all the metrics are collected via the application log.
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
Make sure that you start the collector somewhere in an initializer or before the
|
16
|
+
you want to start collecting metrics:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
ActiveMetrics::Collector.attach
|
20
|
+
```
|
21
|
+
|
22
|
+
Then include the module and then start collecting the metrics you want:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
require 'active_metrics'
|
26
|
+
|
27
|
+
class Foo
|
28
|
+
|
29
|
+
include ActiveMetrics::Instrumentable
|
30
|
+
|
31
|
+
def bar
|
32
|
+
count 'method.bar'
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
Available methods:
|
39
|
+
|
40
|
+
* `count`: add a value (default is 1) to a counter
|
41
|
+
* `measure`: individual measurements that comprise a statistical distribution (i.e. latency measurements)
|
42
|
+
* `sample`: simple key/numerical value pair
|
43
|
+
|
44
|
+
Be mindful of any kind of conflicts when including the module in your class.
|
45
|
+
|
46
|
+
## Contributing
|
47
|
+
|
48
|
+
Bug reports and pull requests are welcome on GitHub at [https://github.com/andreimaxim/active_metrics.]()
|
49
|
+
|
50
|
+
## License
|
51
|
+
|
52
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'active_metrics/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'active_metrics'
|
8
|
+
spec.version = ActiveMetrics::VERSION
|
9
|
+
spec.authors = ['Andrei Maxim']
|
10
|
+
spec.email = ['andrei@andreimaxim.ro']
|
11
|
+
|
12
|
+
spec.summary = %q{Metrics based on ActiveSupport::Notifications}
|
13
|
+
spec.homepage = 'https://github.com/andreimaxim/active_metrics'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.cert_chain = ['certs/andreimaxim.pem']
|
17
|
+
spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $0 =~ /gem\z/
|
18
|
+
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
|
+
f.match(%r{^(test|spec|features)/})
|
21
|
+
end
|
22
|
+
spec.bindir = 'exe'
|
23
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
|
+
spec.require_paths = ['lib']
|
25
|
+
|
26
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
27
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
28
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
29
|
+
spec.add_development_dependency 'simplecov', '~> 0.15'
|
30
|
+
spec.add_development_dependency 'pry', '~> 0.11'
|
31
|
+
|
32
|
+
# This is a bit sketchy for now as we generally need just
|
33
|
+
# ActiveSupport::Notifications but specifying a fixed version might create
|
34
|
+
# issues with various Rails installations (AS::N v4 vs Rails v5 for example)
|
35
|
+
#
|
36
|
+
# This will have to do for now, unless somebody has a better idea.
|
37
|
+
spec .add_dependency 'activesupport', '>= 3.0.0'
|
38
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "active_metrics"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMQ8wDQYDVQQDDAZhbmRy
|
3
|
+
ZWkxGzAZBgoJkiaJk/IsZAEZFgthbmRyZWltYXhpbTESMBAGCgmSJomT8ixkARkW
|
4
|
+
AnJvMB4XDTE4MDIwODE0MDY1OVoXDTE5MDIwODE0MDY1OVowQjEPMA0GA1UEAwwG
|
5
|
+
YW5kcmVpMRswGQYKCZImiZPyLGQBGRYLYW5kcmVpbWF4aW0xEjAQBgoJkiaJk/Is
|
6
|
+
ZAEZFgJybzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALdTaGJxq8LS
|
7
|
+
BvQ21mseXIg+GTwpw28yIu3I8Y4y9dbCMsYSkiFpb1Gyxkc4/OBdch5LWZMY4Kek
|
8
|
+
tN2tesl/pI2PoCoQ6ogcn/FxBI23OK4GyYtwLq3xDPYDk4Onaa84tTLSgiZey2Ml
|
9
|
+
sgUb0ADMS+dVJWYZDUiYJZ8vDvK//ikcLbCY05WpH2x5LpJeapzA+lOiVIn5PC3W
|
10
|
+
lgP295hS8fqah3GF7TtC4ByFNwUnv9BrXXiaxvcQxX2KNKVib5CahTSA4R4H9nLu
|
11
|
+
hFA/pTftVjAQGNEoUhU9O3VpUCG9Yt0oP9FUCVsUAWtuj3H+BaTak6g6FmVDTRuv
|
12
|
+
D0ANHY5WdlUCAwEAAaN9MHswCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
|
13
|
+
BBYEFIzifXvS7qF30ai0d+1gE3iuajBzMCAGA1UdEQQZMBeBFWFuZHJlaUBhbmRy
|
14
|
+
ZWltYXhpbS5ybzAgBgNVHRIEGTAXgRVhbmRyZWlAYW5kcmVpbWF4aW0ucm8wDQYJ
|
15
|
+
KoZIhvcNAQEFBQADggEBACefrEXpo9etDtbh5zpT/VdHIVhPXZvg5xsatQT/5avo
|
16
|
+
LA/ViXzdK+vgvzSPJeTIuado4S99yCXvCcykolmeQNh3q7913oM9rdX0+hmPJGnA
|
17
|
+
T+Bdfx/Fny1fdmPDIDmOETY3aBIhi8C4TStZId3ljbfWZMWUiwG9xPcxBAEyvQvc
|
18
|
+
6tStBYtHshxnBdc5h6K7pzhfVxQJwW2ginSpmcRFKjw6laDKKywYprRWKuVMM42t
|
19
|
+
rPPwQsEaMMSGpCTMKe7vlWXJhWOuC9msqqkU/o5TeSuEEsr5kflYoXMI41nC4sz7
|
20
|
+
P4zlDD+LhwEtllWACsKJgJFkEy28Mp1o4lQM4zO3I/E=
|
21
|
+
-----END CERTIFICATE-----
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
module ActiveMetrics
|
2
|
+
class Collector
|
3
|
+
|
4
|
+
PREFIX = 'com.active_metrics'.freeze
|
5
|
+
|
6
|
+
class << self
|
7
|
+
|
8
|
+
# Start subscribing to the metrics-related events.
|
9
|
+
def attach
|
10
|
+
ActiveSupport::Notifications.subscribe(/#{PREFIX}/i) do |name, _, _, _, data|
|
11
|
+
deliver(name, data)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# Deliver a metric to Librato
|
16
|
+
#
|
17
|
+
# According to the Heroku DevCenter there is already a tight integration
|
18
|
+
# between Heroku logs and Librato so simply using `$stdout.puts` will be
|
19
|
+
# enough, as long as a specific format is used.
|
20
|
+
#
|
21
|
+
# @param name [String] The name of the event being measured
|
22
|
+
# @param data [Hash] a Hash with type of metric and the value to be recorded
|
23
|
+
def deliver(name, data = {})
|
24
|
+
key = name.gsub(PREFIX, '')
|
25
|
+
value = data[:value]
|
26
|
+
metric = data[:metric]
|
27
|
+
|
28
|
+
$stdout.puts "#{metric}##{key}=#{value}"
|
29
|
+
end
|
30
|
+
|
31
|
+
# Record an event
|
32
|
+
#
|
33
|
+
# @param event [String] The name of the event
|
34
|
+
# @param payload [Hash] A hash that contains the event-related data.
|
35
|
+
def record(event, payload = {})
|
36
|
+
# Add a prefix to all events so things broadcasted using this method
|
37
|
+
# will not get picked up by possibly other `ActiveSupport::Notifications`
|
38
|
+
# subscribers.
|
39
|
+
name = "#{PREFIX}#{event}"
|
40
|
+
|
41
|
+
if block_given?
|
42
|
+
ActiveSupport::Notifications.instrument(name, payload) { yield }
|
43
|
+
else
|
44
|
+
ActiveSupport::Notifications.instrument(name, payload)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,46 @@
|
|
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
|
+
# @param event [String] The name of the event
|
28
|
+
# @param value [Integer, String] The value measured.
|
29
|
+
def measure(event, value = 0)
|
30
|
+
ActiveMetrics::Collector.record(event, { metric: 'measure', value: value })
|
31
|
+
end
|
32
|
+
|
33
|
+
# Sample metrics are used to convey simple key/numerical value pairs when
|
34
|
+
# you are already calculating some kind of summary statistic in your app and
|
35
|
+
# merely need a simple transport mechanism to Librato.
|
36
|
+
#
|
37
|
+
# Typically you would submit sample metrics on some periodic tick and set
|
38
|
+
# said period on the metric in Librato.
|
39
|
+
#
|
40
|
+
# @param key [String] The name of the sample
|
41
|
+
# @param value [Object] The value of the sample
|
42
|
+
def sample(key, value)
|
43
|
+
ActiveMetrics::Collector.record(key, { metric: 'sample', value: value })
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: active_metrics
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andrei Maxim
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain:
|
11
|
+
- certs/andreimaxim.pem
|
12
|
+
date: 2018-02-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.16'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.16'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '10.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '10.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: minitest
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '5.0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '5.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: simplecov
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.15'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.15'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: pry
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0.11'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0.11'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: activesupport
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 3.0.0
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 3.0.0
|
98
|
+
description:
|
99
|
+
email:
|
100
|
+
- andrei@andreimaxim.ro
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Dockerfile
|
108
|
+
- Gemfile
|
109
|
+
- Gemfile.lock
|
110
|
+
- LICENSE.txt
|
111
|
+
- README.md
|
112
|
+
- Rakefile
|
113
|
+
- active_metrics.gemspec
|
114
|
+
- bin/console
|
115
|
+
- bin/setup
|
116
|
+
- certs/andreimaxim.pem
|
117
|
+
- docker-compose.yml
|
118
|
+
- lib/active_metrics.rb
|
119
|
+
- lib/active_metrics/collector.rb
|
120
|
+
- lib/active_metrics/instrumentable.rb
|
121
|
+
- lib/active_metrics/version.rb
|
122
|
+
homepage: https://github.com/andreimaxim/active_metrics
|
123
|
+
licenses:
|
124
|
+
- MIT
|
125
|
+
metadata: {}
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
requirements: []
|
141
|
+
rubyforge_project:
|
142
|
+
rubygems_version: 2.6.13
|
143
|
+
signing_key:
|
144
|
+
specification_version: 4
|
145
|
+
summary: Metrics based on ActiveSupport::Notifications
|
146
|
+
test_files: []
|