mnemosyne-ruby 1.5.1 → 1.6.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 +4 -4
- data/.gitignore +4 -2
- data/.rubocop.yml +5 -1
- data/.travis.yml +26 -20
- data/Appraisals +20 -0
- data/CHANGELOG.md +83 -56
- data/Gemfile +12 -16
- data/gemfiles/rails_42.gemfile +20 -0
- data/gemfiles/rails_50.gemfile +20 -0
- data/gemfiles/rails_51.gemfile +20 -0
- data/gemfiles/rails_52.gemfile +20 -0
- data/lib/mnemosyne-ruby.rb +0 -1
- data/lib/mnemosyne.rb +2 -0
- data/lib/mnemosyne/configuration.rb +1 -1
- data/lib/mnemosyne/instrumenter.rb +1 -3
- data/lib/mnemosyne/middleware/acfs.rb +1 -1
- data/lib/mnemosyne/probes/active_record/instantiation.rb +32 -0
- data/lib/mnemosyne/probes/active_record/query.rb +16 -1
- data/lib/mnemosyne/probes/faraday/base.rb +50 -0
- data/lib/mnemosyne/version.rb +1 -1
- data/mnemosyne-ruby.gemspec +3 -3
- metadata +20 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6f6c8d36a42e84e754dc65cf09409ba7a916a40961ec9ddbf7b1642afb96d92a
|
|
4
|
+
data.tar.gz: baf625dc9039554e968f2ed485b117dbd9dae5ae9ececa2e6b9fc8ae9b985d43
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e67f54ef807765c50ec14f70608f1dc542fc55a4107cab5671a31ae7af89b797d4248a1ef1e6376ce86b9ab8ce1fd5ff4097adfb51faa8bb32a0cb7a22e7f450
|
|
7
|
+
data.tar.gz: cb994c75a109e7e56290d8c7ca950dc83b790d86e875eaf8637d3992cf18ace3a33d6eb26563dfaa567cb19cebb087c5b164ea61294a15b3cc857a3175ac4632
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
AllCops:
|
|
2
2
|
TargetRubyVersion: 2.2
|
|
3
|
+
Exclude:
|
|
4
|
+
- 'vendor/**/*'
|
|
5
|
+
- 'gemfiles/**/*'
|
|
3
6
|
|
|
4
7
|
Rails:
|
|
5
8
|
Enabled: false
|
|
@@ -47,7 +50,8 @@ Style/RescueModifier:
|
|
|
47
50
|
|
|
48
51
|
Metrics/LineLength:
|
|
49
52
|
Exclude:
|
|
50
|
-
- '
|
|
53
|
+
- '*.gemspec'
|
|
54
|
+
- 'spec/**/*'
|
|
51
55
|
|
|
52
56
|
Metrics/BlockLength:
|
|
53
57
|
Exclude:
|
data/.travis.yml
CHANGED
|
@@ -2,28 +2,34 @@ language: ruby
|
|
|
2
2
|
cache: bundler
|
|
3
3
|
sudo: required
|
|
4
4
|
services:
|
|
5
|
-
- rabbitmq
|
|
5
|
+
- rabbitmq
|
|
6
6
|
rvm:
|
|
7
|
-
- 2.
|
|
8
|
-
- 2.
|
|
9
|
-
- 2.
|
|
7
|
+
- 2.6.3
|
|
8
|
+
- 2.5.5
|
|
9
|
+
- 2.4.6
|
|
10
|
+
- 2.3.8
|
|
11
|
+
gemfile:
|
|
12
|
+
- gemfiles/rails_52.gemfile
|
|
13
|
+
- gemfiles/rails_51.gemfile
|
|
14
|
+
- gemfiles/rails_50.gemfile
|
|
15
|
+
- gemfiles/rails_42.gemfile
|
|
10
16
|
before_install:
|
|
11
|
-
-
|
|
12
|
-
- gem install bundler
|
|
17
|
+
- echo yes | rvm gemset delete global
|
|
18
|
+
- gem install bundler -v'~>1.0'
|
|
13
19
|
script:
|
|
14
|
-
- bundle exec rake rubocop
|
|
15
|
-
- bundle exec rake spec
|
|
20
|
+
- bundle exec rake rubocop
|
|
21
|
+
- bundle exec rake spec
|
|
16
22
|
jobs:
|
|
17
23
|
include:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
- stage: Release
|
|
25
|
+
rvm: 2.6.3
|
|
26
|
+
install: skip
|
|
27
|
+
script: skip
|
|
28
|
+
deploy:
|
|
29
|
+
provider: rubygems
|
|
30
|
+
api_key:
|
|
31
|
+
secure: s7hUPxL4RULQ398GXk6Ko/y3QtUy7bZMTzcC4sL9Opsw76IRhOY0n+c6r+S8wHH3n+cRxiLpUyXRAsLMhjd67Rn+qaBoVbEfyzZKt1EAYyskFdPf40Jlq3FjOjRjAJW+hLDYloLXqqgLIrx/ybOv0YOfKyGKmk6eBNCx9S5GPJzt15WAM4Lz+TxNuR82YhsDybcGtTtLJ1WCF5FeQ297l2OESgvikRoADhIIM3HVk6Msyqw7RwFlpoIFGPRhXZD7UmML981rxK4Gxkh5xKGJiInjzL8lYOgT3KIfSLwtp9JoDbtpKbzdIQfA8Z35aRzpLjofPFxxYsKjwmCfdKxvJf5E5hTlenrILqSIovuknHb9oNOp0aCdp52N4+B8BZl7n1muQzr1AKy/ogtkTAgmlPs5tW+qx2h6E5MU0wfy6sS0AqKtVcGaZ1u85llifY2TvYriHReBIf8vddOe6LLbDcPnaTrTnAdsk/Bx9n+Zd8A2l3vzam9RbwTjlr7ZezIY67RRknfScEO+qCt9cfdAKf57ZdpiAecDFEr9V/CdAPEBevxaoiTwzFrjO+N9BY57eGHJsPda8NwNsrBraGBgcgKOXWeg9MowfU+wWpUSbeAJDZ2zZabGRKJkXpbRNNnf3webPSaXfb9qeWrCHXXbuI8JO+PQmx6OX8IHGjqyE1E=
|
|
32
|
+
gem: mnemosyne-ruby
|
|
33
|
+
on:
|
|
34
|
+
tags: true
|
|
35
|
+
repo: mnemosyne-mon/mnemosyne-ruby
|
data/Appraisals
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
appraise 'rails-52' do
|
|
3
|
+
gem 'rails', '~> 5.2.0', require: false
|
|
4
|
+
gem 'sqlite3', '~> 1.4', require: false
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
appraise 'rails-51' do
|
|
8
|
+
gem 'rails', '~> 5.1.0', require: false
|
|
9
|
+
gem 'sqlite3', '~> 1.4', require: false
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
appraise 'rails-50' do
|
|
13
|
+
gem 'rails', '~> 5.0.0', require: false
|
|
14
|
+
gem 'sqlite3', '~> 1.3.6', require: false
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
appraise 'rails-42' do
|
|
18
|
+
gem 'rails', '~> 4.2.0', require: false
|
|
19
|
+
gem 'sqlite3', '~> 1.3.6', require: false
|
|
20
|
+
end
|
data/CHANGELOG.md
CHANGED
|
@@ -1,57 +1,84 @@
|
|
|
1
1
|
# Changelog
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
5
|
+
|
|
6
|
+
## [Unreleased]
|
|
7
|
+
|
|
8
|
+
## [1.6.1] - 2019-05-14
|
|
9
|
+
### Fixed
|
|
10
|
+
- Fix release pipeline; no code changed
|
|
11
|
+
|
|
12
|
+
## [1.6.0] - 2019-05-14
|
|
13
|
+
### Added
|
|
14
|
+
- Add faraday probe (#11)
|
|
15
|
+
|
|
16
|
+
## [1.5.1] - 2019-05-14
|
|
17
|
+
### Fixed
|
|
18
|
+
- Avoid using internal AMQP constant: Fix compat with amq-protocol 2.3+
|
|
19
|
+
|
|
20
|
+
## [1.5.0] - 2019-05-14
|
|
21
|
+
### Added
|
|
22
|
+
- Add ActiveJob perform probe
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
- Capture endpoint names for grape web requests
|
|
26
|
+
- `attach_error` accepts errors without backtraces and string messages
|
|
27
|
+
|
|
28
|
+
## [1.4.0] - 2019-05-14
|
|
29
|
+
### Added
|
|
30
|
+
- Add global `#attach_error` for manual error reporting
|
|
31
|
+
|
|
32
|
+
## [1.3.0] - 2019-05-14
|
|
33
|
+
### Added
|
|
34
|
+
- Add exception serialization to trace and protocol
|
|
35
|
+
- Add exception reporting to Sidekiq, Msgr, Rack and Rails
|
|
36
|
+
|
|
37
|
+
## [1.2.1] - 2019-05-14
|
|
38
|
+
### Changed
|
|
39
|
+
- Improve AMQP connection recovery
|
|
40
|
+
- Fix dynamic probe loading
|
|
41
|
+
|
|
42
|
+
## [1.2.0] - 2019-05-14
|
|
43
|
+
### Added
|
|
44
|
+
- Collect response metadata in rack instrumentation
|
|
45
|
+
|
|
46
|
+
## [1.1.0] - 2019-05-14
|
|
47
|
+
### Added
|
|
48
|
+
- Add metadata to rack instrumentation
|
|
49
|
+
- Add msgr server & client instrumentation
|
|
50
|
+
- Add sidekiq client instrumentation
|
|
51
|
+
- Add sidekiq server instrumentation
|
|
52
|
+
- Add acfs request parameter tracing
|
|
53
|
+
|
|
54
|
+
## [1.0.1] - 2019-05-14
|
|
55
|
+
### Fixed
|
|
56
|
+
- Fix issue with `enabled` configuration flag (#1)
|
|
57
|
+
|
|
58
|
+
## [1.0.0] - 2019-05-14
|
|
59
|
+
### Fixed
|
|
60
|
+
- Fix issue with acfs middleware on non-tracing contexts
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
- Simplify restify probe to only extend base adapter
|
|
64
|
+
- Remove FQDN lookup as it failed on missing RDNS
|
|
65
|
+
|
|
66
|
+
## 0.2.0 - 2019-05-14
|
|
67
|
+
### Changed
|
|
68
|
+
- Rename gem to mnemosyne-ruby due to name conflict
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
- Add platform identifier
|
|
72
|
+
|
|
73
|
+
[Unreleased]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.6.1...HEAD
|
|
74
|
+
[1.6.1]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.6.0...v1.6.1
|
|
75
|
+
[1.6.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.5.1...v1.6.0
|
|
76
|
+
[1.5.1]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.5.0...v1.5.1
|
|
77
|
+
[1.5.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.4.0...v1.5.0
|
|
78
|
+
[1.4.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.3.0...v1.4.0
|
|
79
|
+
[1.3.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.2.1...v1.3.0
|
|
80
|
+
[1.2.1]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.2.0...v1.2.1
|
|
81
|
+
[1.2.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.1.0...v1.2.0
|
|
82
|
+
[1.1.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.0.1...v1.1.0
|
|
83
|
+
[1.0.1]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.0.0...v1.0.1
|
|
84
|
+
[1.0.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v0.2.0...v1.0.0
|
data/Gemfile
CHANGED
|
@@ -5,23 +5,19 @@ source 'https://rubygems.org'
|
|
|
5
5
|
# Specify your gem's dependencies in mnemosyne.gemspec
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
+
gem 'appraisal'
|
|
8
9
|
gem 'rake', '~> 12.0'
|
|
9
10
|
gem 'rspec', '~> 3.6'
|
|
10
|
-
gem 'rubocop', '~> 0.
|
|
11
|
-
gem 'timecop', '~> 0.
|
|
11
|
+
gem 'rubocop', '~> 0.67.1'
|
|
12
|
+
gem 'timecop', '~> 0.9.1'
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
gem 'pry-byebug', require: false
|
|
16
|
-
end
|
|
14
|
+
gem 'pry', require: false
|
|
15
|
+
gem 'pry-byebug', require: false
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
gem 'rubocop', '~> 0.50.0'
|
|
17
|
+
gem 'faraday', require: false
|
|
18
|
+
gem 'msgr', require: false
|
|
19
|
+
gem 'rails', require: false
|
|
20
|
+
gem 'restify', require: false
|
|
21
|
+
gem 'sidekiq', require: false
|
|
22
|
+
gem 'sqlite3', require: false
|
|
23
|
+
gem 'webmock', require: false
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal"
|
|
6
|
+
gem "rake", "~> 12.0"
|
|
7
|
+
gem "rspec", "~> 3.6"
|
|
8
|
+
gem "rubocop", "~> 0.67.1"
|
|
9
|
+
gem "timecop", "~> 0.8.0"
|
|
10
|
+
gem "pry", require: false
|
|
11
|
+
gem "pry-byebug", require: false
|
|
12
|
+
gem "faraday", require: false
|
|
13
|
+
gem "msgr", require: false
|
|
14
|
+
gem "rails", "~> 4.2.0", require: false
|
|
15
|
+
gem "restify", require: false
|
|
16
|
+
gem "sidekiq", require: false
|
|
17
|
+
gem "sqlite3", "~> 1.3.6", require: false
|
|
18
|
+
gem "webmock", require: false
|
|
19
|
+
|
|
20
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal"
|
|
6
|
+
gem "rake", "~> 12.0"
|
|
7
|
+
gem "rspec", "~> 3.6"
|
|
8
|
+
gem "rubocop", "~> 0.67.1"
|
|
9
|
+
gem "timecop", "~> 0.8.0"
|
|
10
|
+
gem "pry", require: false
|
|
11
|
+
gem "pry-byebug", require: false
|
|
12
|
+
gem "faraday", require: false
|
|
13
|
+
gem "msgr", require: false
|
|
14
|
+
gem "rails", "~> 5.0.0", require: false
|
|
15
|
+
gem "restify", require: false
|
|
16
|
+
gem "sidekiq", require: false
|
|
17
|
+
gem "sqlite3", "~> 1.3.6", require: false
|
|
18
|
+
gem "webmock", require: false
|
|
19
|
+
|
|
20
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal"
|
|
6
|
+
gem "rake", "~> 12.0"
|
|
7
|
+
gem "rspec", "~> 3.6"
|
|
8
|
+
gem "rubocop", "~> 0.67.1"
|
|
9
|
+
gem "timecop", "~> 0.8.0"
|
|
10
|
+
gem "pry", require: false
|
|
11
|
+
gem "pry-byebug", require: false
|
|
12
|
+
gem "faraday", require: false
|
|
13
|
+
gem "msgr", require: false
|
|
14
|
+
gem "rails", "~> 5.1.0", require: false
|
|
15
|
+
gem "restify", require: false
|
|
16
|
+
gem "sidekiq", require: false
|
|
17
|
+
gem "sqlite3", "~> 1.4", require: false
|
|
18
|
+
gem "webmock", require: false
|
|
19
|
+
|
|
20
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal"
|
|
6
|
+
gem "rake", "~> 12.0"
|
|
7
|
+
gem "rspec", "~> 3.6"
|
|
8
|
+
gem "rubocop", "~> 0.67.1"
|
|
9
|
+
gem "timecop", "~> 0.8.0"
|
|
10
|
+
gem "pry", require: false
|
|
11
|
+
gem "pry-byebug", require: false
|
|
12
|
+
gem "faraday", require: false
|
|
13
|
+
gem "msgr", require: false
|
|
14
|
+
gem "rails", "~> 5.2.0", require: false
|
|
15
|
+
gem "restify", require: false
|
|
16
|
+
gem "sidekiq", require: false
|
|
17
|
+
gem "sqlite3", "~> 1.4", require: false
|
|
18
|
+
gem "webmock", require: false
|
|
19
|
+
|
|
20
|
+
gemspec path: "../"
|
data/lib/mnemosyne-ruby.rb
CHANGED
data/lib/mnemosyne.rb
CHANGED
|
@@ -35,6 +35,8 @@ module Mnemosyne
|
|
|
35
35
|
require 'mnemosyne/probes/action_view/render_template'
|
|
36
36
|
require 'mnemosyne/probes/active_job/perform'
|
|
37
37
|
require 'mnemosyne/probes/active_record/query'
|
|
38
|
+
require 'mnemosyne/probes/active_record/instantiation'
|
|
39
|
+
require 'mnemosyne/probes/faraday/base'
|
|
38
40
|
require 'mnemosyne/probes/grape/endpoint_render'
|
|
39
41
|
require 'mnemosyne/probes/grape/endpoint_run'
|
|
40
42
|
require 'mnemosyne/probes/grape/endpoint_run_filters'
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'thread'
|
|
4
|
-
|
|
5
3
|
module Mnemosyne
|
|
6
4
|
class Instrumenter
|
|
7
5
|
IDENT = :__mnemosyne_current_trace
|
|
@@ -32,7 +30,7 @@ module Mnemosyne
|
|
|
32
30
|
return trace
|
|
33
31
|
end
|
|
34
32
|
|
|
35
|
-
trace = self.current_trace = Trace.new(self, name,
|
|
33
|
+
trace = self.current_trace = Trace.new(self, name, kwargs)
|
|
36
34
|
|
|
37
35
|
return trace unless block_given?
|
|
38
36
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Mnemosyne
|
|
4
|
+
module Probes
|
|
5
|
+
module ActiveRecord
|
|
6
|
+
module Instantiation
|
|
7
|
+
class Probe < ::Mnemosyne::Probe
|
|
8
|
+
subscribe 'instantiation.active_record'
|
|
9
|
+
|
|
10
|
+
def call(trace, _name, start, finish, _id, payload)
|
|
11
|
+
start = ::Mnemosyne::Clock.to_tick(start)
|
|
12
|
+
finish = ::Mnemosyne::Clock.to_tick(finish)
|
|
13
|
+
|
|
14
|
+
meta = {
|
|
15
|
+
count: payload[:record_count],
|
|
16
|
+
class_name: payload[:class_name]
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
span = ::Mnemosyne::Span.new 'db.instantiation.active_record',
|
|
20
|
+
start: start, finish: finish, meta: meta
|
|
21
|
+
|
|
22
|
+
trace << span
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
register 'ActiveRecord::Base',
|
|
29
|
+
'active_record',
|
|
30
|
+
ActiveRecord::Instantiation::Probe.new
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -14,7 +14,8 @@ module Mnemosyne
|
|
|
14
14
|
finish = ::Mnemosyne::Clock.to_tick(finish)
|
|
15
15
|
|
|
16
16
|
meta = {
|
|
17
|
-
sql: payload[:sql]
|
|
17
|
+
sql: payload[:sql],
|
|
18
|
+
binds: extract_bind_values(payload)
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
span = ::Mnemosyne::Span.new 'db.query.active_record',
|
|
@@ -22,6 +23,20 @@ module Mnemosyne
|
|
|
22
23
|
|
|
23
24
|
trace << span
|
|
24
25
|
end
|
|
26
|
+
|
|
27
|
+
def extract_bind_values(payload)
|
|
28
|
+
return if payload[:binds].empty?
|
|
29
|
+
|
|
30
|
+
payload[:binds].map do |bind|
|
|
31
|
+
if bind.is_a?(Array)
|
|
32
|
+
bind[0].type_cast_for_database(bind[1])
|
|
33
|
+
else
|
|
34
|
+
bind.value_for_database
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
rescue StandardError
|
|
38
|
+
[]
|
|
39
|
+
end
|
|
25
40
|
end
|
|
26
41
|
end
|
|
27
42
|
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Mnemosyne
|
|
4
|
+
module Probes
|
|
5
|
+
module Faraday
|
|
6
|
+
module Base
|
|
7
|
+
class Probe < ::Mnemosyne::Probe
|
|
8
|
+
def setup
|
|
9
|
+
::Faraday.default_connection_options = {
|
|
10
|
+
builder: ::Faraday::RackBuilder.new do |faraday|
|
|
11
|
+
faraday.use Probe::Middleware
|
|
12
|
+
faraday.adapter ::Faraday.default_adapter
|
|
13
|
+
end
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class Middleware
|
|
18
|
+
def initialize(app)
|
|
19
|
+
@app = app
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def call(env)
|
|
23
|
+
trace = ::Mnemosyne::Instrumenter.current_trace
|
|
24
|
+
|
|
25
|
+
return @app.call(env) unless trace
|
|
26
|
+
|
|
27
|
+
span = ::Mnemosyne::Span.new 'external.http.faraday', \
|
|
28
|
+
meta: {url: env[:url].to_s, method: env[:method]}
|
|
29
|
+
|
|
30
|
+
span.start!
|
|
31
|
+
|
|
32
|
+
env[:request_headers].merge!({
|
|
33
|
+
'X-Mnemosyne-Transaction' => trace.transaction,
|
|
34
|
+
'X-Mnemosyne-Origin' => span.uuid,
|
|
35
|
+
}.reject {|_, v| v.nil? })
|
|
36
|
+
|
|
37
|
+
@app.call(env).on_complete do |env|
|
|
38
|
+
span.meta[:status] = env[:status]
|
|
39
|
+
|
|
40
|
+
trace << span.finish!
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
register 'Faraday', 'faraday', Faraday::Base::Probe.new
|
|
49
|
+
end
|
|
50
|
+
end
|
data/lib/mnemosyne/version.rb
CHANGED
data/mnemosyne-ruby.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
lib = File.expand_path('
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require 'mnemosyne/version'
|
|
6
6
|
|
|
@@ -22,8 +22,8 @@ Gem::Specification.new do |spec|
|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^bin/}) {|f| File.basename(f) }
|
|
23
23
|
spec.require_paths = %w[lib]
|
|
24
24
|
|
|
25
|
-
spec.add_runtime_dependency 'bunny'
|
|
26
25
|
spec.add_runtime_dependency 'activesupport', '>= 4'
|
|
26
|
+
spec.add_runtime_dependency 'bunny'
|
|
27
27
|
|
|
28
|
-
spec.add_development_dependency 'bundler'
|
|
28
|
+
spec.add_development_dependency 'bundler'
|
|
29
29
|
end
|
metadata
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mnemosyne-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jan Graichen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2019-05-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: activesupport
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '4'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '4'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: bunny
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '0'
|
|
34
34
|
type: :runtime
|
|
35
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: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: bundler
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '0'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '0'
|
|
55
55
|
description:
|
|
56
56
|
email:
|
|
57
57
|
- jgraichen@altimos.de
|
|
@@ -63,11 +63,16 @@ files:
|
|
|
63
63
|
- ".rspec"
|
|
64
64
|
- ".rubocop.yml"
|
|
65
65
|
- ".travis.yml"
|
|
66
|
+
- Appraisals
|
|
66
67
|
- CHANGELOG.md
|
|
67
68
|
- Gemfile
|
|
68
69
|
- LICENSE
|
|
69
70
|
- README.md
|
|
70
71
|
- Rakefile
|
|
72
|
+
- gemfiles/rails_42.gemfile
|
|
73
|
+
- gemfiles/rails_50.gemfile
|
|
74
|
+
- gemfiles/rails_51.gemfile
|
|
75
|
+
- gemfiles/rails_52.gemfile
|
|
71
76
|
- lib/mnemosyne-ruby.rb
|
|
72
77
|
- lib/mnemosyne.rb
|
|
73
78
|
- lib/mnemosyne/client.rb
|
|
@@ -88,7 +93,9 @@ files:
|
|
|
88
93
|
- lib/mnemosyne/probes/action_view/render_partial.rb
|
|
89
94
|
- lib/mnemosyne/probes/action_view/render_template.rb
|
|
90
95
|
- lib/mnemosyne/probes/active_job/perform.rb
|
|
96
|
+
- lib/mnemosyne/probes/active_record/instantiation.rb
|
|
91
97
|
- lib/mnemosyne/probes/active_record/query.rb
|
|
98
|
+
- lib/mnemosyne/probes/faraday/base.rb
|
|
92
99
|
- lib/mnemosyne/probes/grape/endpoint_render.rb
|
|
93
100
|
- lib/mnemosyne/probes/grape/endpoint_run.rb
|
|
94
101
|
- lib/mnemosyne/probes/grape/endpoint_run_filters.rb
|
|
@@ -126,8 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
126
133
|
- !ruby/object:Gem::Version
|
|
127
134
|
version: '0'
|
|
128
135
|
requirements: []
|
|
129
|
-
|
|
130
|
-
rubygems_version: 2.7.4
|
|
136
|
+
rubygems_version: 3.0.3
|
|
131
137
|
signing_key:
|
|
132
138
|
specification_version: 4
|
|
133
139
|
summary: Ruby/Rails client for Mnemosyne APM
|