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 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
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /docker-compose.override.yml
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
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
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in active_metrics.gemspec
6
+ gemspec
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
+ [![Build Status](https://travis-ci.org/andreimaxim/active_metrics.svg?branch=master)](https://travis-ci.org/andreimaxim/active_metrics)
4
+ [![Maintainability](https://api.codeclimate.com/v1/badges/50e30f3b65985e299e9e/maintainability)](https://codeclimate.com/github/andreimaxim/active_metrics/maintainability)
5
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/50e30f3b65985e299e9e/test_coverage)](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,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/*_test.rb"]
8
+ end
9
+
10
+ task :default => :test
@@ -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,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -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-----
@@ -0,0 +1,6 @@
1
+ version: '3'
2
+
3
+ services:
4
+
5
+ gem:
6
+ build: .
@@ -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
@@ -0,0 +1,3 @@
1
+ module ActiveMetrics
2
+ VERSION = '0.0.1'.freeze
3
+ end
@@ -0,0 +1,10 @@
1
+ require 'active_support'
2
+
3
+ require 'active_metrics/version'
4
+
5
+ require 'active_metrics/collector'
6
+ require 'active_metrics/instrumentable'
7
+
8
+ module ActiveMetrics
9
+ # Your code goes here...
10
+ 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: []