mnemosyne-ruby 1.13.0 → 1.15.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f726dc01d0fb0ea763c94132859007806f3dfb03df6fda17bf4a755bc6f1c622
4
- data.tar.gz: bb835bd13a884134036224abeafd7e590949777709b1af89f4b4422ea35406a3
3
+ metadata.gz: 0366be612fd9619593a970098205515b3e361bca87359e4f52d44f0fb2324f35
4
+ data.tar.gz: ba0c6a47f4fa471fbfee289f60992c75c6b1dff50380134a4c3f4568436c8a16
5
5
  SHA512:
6
- metadata.gz: 22c8ef3a8a40802efbc25501ad9d8f047c1b9bd5727991a76861a86633549992f39d47ac894f97943fd272183852ed438b5a1302ca42dc002591bcd6e068296b
7
- data.tar.gz: a30964afb55d3995f4ae051c5ac5b06bb99677e2e0a743fed7accccf1c120e02330831f049bcdb7365d519a1e3907ff8b01d589925a00c67638aa1346697eb71
6
+ metadata.gz: aabbd8356edee9ca7ddca04641c5623f6c164679145d9f8ac91d7fab8fc7a0647e9d026603f45677bdfb996d1d414889537e4ad46b1cae12d7d5401633da31dd
7
+ data.tar.gz: 401dea26b2ab32e8e55ae34f3b168657a1123415aed59eb4c5883fbcf39b60c8b7b2cea7b17a61691850d1eed44c391bfbd463265b9503139f94f5f244db1338
@@ -6,7 +6,10 @@ on:
6
6
  jobs:
7
7
  rubocop:
8
8
  name: rubocop
9
- runs-on: ubuntu-20.04
9
+ runs-on: ubuntu-22.04
10
+
11
+ env:
12
+ BUNDLE_WITHOUT: development test
10
13
 
11
14
  steps:
12
15
  - uses: actions/checkout@master
@@ -14,9 +17,8 @@ jobs:
14
17
  env:
15
18
  BUNDLE_JOBS: 4
16
19
  BUNDLE_RETRY: 3
17
- BUNDLE_WITHOUT: development,test
18
20
  with:
19
- ruby-version: 3.0
21
+ ruby-version: 3.1
20
22
  bundler-cache: true
21
23
 
22
24
  - name: Run rubocop
@@ -6,36 +6,35 @@ on:
6
6
  jobs:
7
7
  test:
8
8
  name: Ruby ${{ matrix.ruby }} / ${{ matrix.suite }}
9
- runs-on: ubuntu-20.04
9
+ runs-on: ubuntu-22.04
10
10
 
11
11
  strategy:
12
12
  fail-fast: false
13
13
  matrix:
14
14
  ruby:
15
+ - "3.2"
15
16
  - "3.1"
16
17
  - "3.0"
17
18
  - "2.7"
18
- - "2.6"
19
- - "2.5"
20
19
  suite:
21
20
  - core
22
21
  - faraday-0.9
23
22
  - faraday-1.0
24
23
  - msgr
25
24
  - rack
26
- - rails-5.0
27
- - rails-5.1
28
25
  - rails-5.2
29
26
  - rails-6.0
30
27
  - rails-6.1
31
28
  - rails-7.0
32
29
  - redis-4.0
30
+ - redis-5.0
33
31
  - restify
34
32
  - sidekiq-5
35
33
  - sidekiq-6
36
34
  include:
37
35
  - suite: core
38
36
  spec: --tag ~probe
37
+ gemfile: gemfiles/core.gemfile
39
38
  - suite: faraday-0.9
40
39
  spec: --tag probe:faraday
41
40
  gemfile: gemfiles/faraday_09.gemfile
@@ -44,14 +43,10 @@ jobs:
44
43
  gemfile: gemfiles/faraday_10.gemfile
45
44
  - suite: msgr
46
45
  spec: --tag probe:msgr
46
+ gemfile: gemfiles/core.gemfile
47
47
  - suite: rack
48
48
  spec: --tag probe:rack
49
- - suite: rails-5.0
50
- spec: --tag probe:rails --tag ~probe
51
- gemfile: gemfiles/rails_50.gemfile
52
- - suite: rails-5.1
53
- spec: --tag probe:rails --tag ~probe
54
- gemfile: gemfiles/rails_51.gemfile
49
+ gemfile: gemfiles/core.gemfile
55
50
  - suite: rails-5.2
56
51
  spec: --tag probe:rails --tag ~probe
57
52
  gemfile: gemfiles/rails_52.gemfile
@@ -67,8 +62,12 @@ jobs:
67
62
  - suite: redis-4.0
68
63
  spec: --tag probe:redis
69
64
  gemfile: gemfiles/redis_40.gemfile
65
+ - suite: redis-5.0
66
+ spec: --tag probe:redis
67
+ gemfile: gemfiles/redis_50.gemfile
70
68
  - suite: restify
71
69
  spec: --tag probe:restify
70
+ gemfile: gemfiles/core.gemfile
72
71
  - suite: sidekiq-5
73
72
  spec: --tag probe:sidekiq
74
73
  gemfile: gemfiles/sidekiq_50.gemfile
@@ -76,25 +75,16 @@ jobs:
76
75
  spec: --tag probe:sidekiq
77
76
  gemfile: gemfiles/sidekiq_60.gemfile
78
77
  exclude:
79
- - suite: rails-5.0
80
- ruby: 3.1
81
- - suite: rails-5.1
82
- ruby: 3.1
83
78
  - suite: rails-5.2
84
- ruby: 3.1
85
- - suite: rails-5.0
86
- ruby: 3.0
87
- - suite: rails-5.1
88
- ruby: 3.0
79
+ ruby: '3.2'
89
80
  - suite: rails-5.2
90
- ruby: 3.0
91
- - suite: rails-7.0
92
- ruby: 2.6
93
- - suite: rails-7.0
94
- ruby: 2.5
81
+ ruby: '3.1'
82
+ - suite: rails-5.2
83
+ ruby: '3.0'
95
84
 
96
85
  env:
97
86
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
87
+ BUNDLE_WITHOUT: development
98
88
 
99
89
  services:
100
90
  rabbitmq:
@@ -108,7 +98,6 @@ jobs:
108
98
  env:
109
99
  BUNDLE_JOBS: 4
110
100
  BUNDLE_RETRY: 3
111
- BUNDLE_WITHOUT: development,test
112
101
  with:
113
102
  ruby-version: ${{ matrix.ruby }}
114
103
  bundler-cache: true
data/.gitignore CHANGED
@@ -4,6 +4,8 @@
4
4
  /coverage/
5
5
  /doc/
6
6
  /Gemfile.lock
7
+ /gemfiles/.bundle/
8
+ /log/
7
9
  /pkg/
8
10
  /spec/examples.txt
9
11
  /spec/reports/
data/.markdownlint.yml ADDED
@@ -0,0 +1,22 @@
1
+ # markdownlint config
2
+
3
+ # The CHANGELOG contains duplicated headers by design
4
+ MD024: false
5
+
6
+ # MD013/line-length: disable line length for all. We prefer lines as
7
+ # long as paragraph with in-editor line breaks.
8
+ MD013: false
9
+
10
+ # MD033/no-inline-html: allow often need tags
11
+ MD033:
12
+ allowed_elements:
13
+ - figure
14
+ - figcaption
15
+
16
+ # MD046/code-block-style: code block style conflicting with
17
+ # admonitions...
18
+ MD046: false
19
+
20
+ # MD048/code-fence-style: code fence style
21
+ MD048:
22
+ style: backtick
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.5
2
+ TargetRubyVersion: 2.7
3
3
  Exclude:
4
4
  - 'vendor/**/*'
5
5
  - 'gemfiles/**/*'
@@ -0,0 +1 @@
1
+ Changelog
data/Appraisals CHANGED
@@ -1,18 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ appraise 'core' do
4
+ remove_gem 'rubocop'
5
+ end
6
+
3
7
  appraise 'faraday-09' do
8
+ remove_gem 'rubocop'
9
+
4
10
  group :test do
5
11
  gem 'faraday', '~> 0.9'
6
12
  end
7
13
  end
8
14
 
9
15
  appraise 'faraday-10' do
16
+ remove_gem 'rubocop'
17
+
10
18
  group :test do
11
19
  gem 'faraday', '~> 1.0'
12
20
  end
13
21
  end
14
22
 
15
23
  appraise 'rails-70' do
24
+ remove_gem 'rubocop'
25
+
16
26
  group :test do
17
27
  gem 'rails', '~> 7.0.0'
18
28
  gem 'sqlite3', '~> 1.4'
@@ -20,6 +30,8 @@ appraise 'rails-70' do
20
30
  end
21
31
 
22
32
  appraise 'rails-61' do
33
+ remove_gem 'rubocop'
34
+
23
35
  group :test do
24
36
  gem 'rails', '~> 6.1.0'
25
37
  gem 'sqlite3', '~> 1.4'
@@ -27,6 +39,8 @@ appraise 'rails-61' do
27
39
  end
28
40
 
29
41
  appraise 'rails-60' do
42
+ remove_gem 'rubocop'
43
+
30
44
  group :test do
31
45
  gem 'rails', '~> 6.0.0'
32
46
  gem 'sqlite3', '~> 1.4'
@@ -34,39 +48,41 @@ appraise 'rails-60' do
34
48
  end
35
49
 
36
50
  appraise 'rails-52' do
51
+ remove_gem 'rubocop'
52
+
37
53
  group :test do
38
54
  gem 'rails', '~> 5.2.0'
39
55
  gem 'sqlite3', '~> 1.4'
40
56
  end
41
57
  end
42
58
 
43
- appraise 'rails-51' do
44
- group :test do
45
- gem 'rails', '~> 5.1.0'
46
- gem 'sqlite3', '~> 1.4'
47
- end
48
- end
59
+ appraise 'redis-40' do
60
+ remove_gem 'rubocop'
49
61
 
50
- appraise 'rails-50' do
51
62
  group :test do
52
- gem 'rails', '~> 5.0.0'
53
- gem 'sqlite3', '~> 1.3.6'
63
+ gem 'redis', '~> 4.0'
54
64
  end
55
65
  end
56
66
 
57
- appraise 'redis-40' do
67
+ appraise 'redis-50' do
68
+ remove_gem 'rubocop'
69
+
58
70
  group :test do
59
- gem 'redis', '~> 4.0'
71
+ gem 'redis', '~> 5.0'
60
72
  end
61
73
  end
62
74
 
63
75
  appraise 'sidekiq-50' do
76
+ remove_gem 'rubocop'
77
+
64
78
  group :test do
65
79
  gem 'sidekiq', '~> 5.0'
66
80
  end
67
81
  end
68
82
 
69
83
  appraise 'sidekiq-60' do
84
+ remove_gem 'rubocop'
85
+
70
86
  group :test do
71
87
  gem 'sidekiq', '~> 6.0'
72
88
  end
data/CHANGELOG.md CHANGED
@@ -1,100 +1,164 @@
1
1
  # Changelog
2
+
2
3
  All notable changes to this project will be documented in this file.
3
4
 
4
5
  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
 
6
7
  ## [Unreleased]
7
8
 
9
+ ## [1.15.0] - 2023-08-23
10
+
11
+ ### Added
12
+
13
+ - Support for `redis` gem v5+
14
+
15
+ ### Fixed
16
+
17
+ - Method signature for `#publish` in MSGR probe
18
+
19
+ ## [1.14.0] - (2023-07-31)
20
+
21
+ ### Added
22
+
23
+ - Tests with Ruby 3.2
24
+
25
+ ### Changed
26
+
27
+ - Replace deprecated `!render.view_component` hook with `render.view_component`
28
+ - Removed tests for Rails 5.0 and 5.1
29
+
8
30
  ## [1.13.0] - 2022-04-14
31
+
9
32
  ### Added
33
+
10
34
  - Support for `view_component` gem (#42)
11
35
  - Support for Ruby 3.1 and Rails 7.0 (formally)
12
36
 
13
37
  ## [1.12.1] - 2022-03-21
38
+
14
39
  ### Added
40
+
15
41
  - More commands whitelisted in Redis span metadata (#44)
16
42
 
17
43
  ## [1.12.0] - 2021-08-24
44
+
18
45
  ### Added
46
+
19
47
  - Support for `redis` gem (#34)
20
48
 
21
49
  ### Removed
50
+
22
51
  - Support for Ruby 2.4 (hard gem requirement)
23
52
 
24
53
  ## [1.11.0] - 2020-12-18
54
+
25
55
  ### Removed
56
+
26
57
  - Support for Ruby 2.4 and Rails 4.2
27
58
 
28
59
  ### Fixed
60
+
29
61
  - Deprecation warnings due to block capture and keyword arguments
30
62
 
31
63
  ## [1.10.0] - 2020-03-05
64
+
32
65
  ### Added
66
+
33
67
  - Support for Faraday 1.0
34
68
 
35
69
  ## [1.9.0] - 2019-12-17
70
+
36
71
  ### Fixed
37
- - [Rack] Fix exceptions raised on trace submit corrupting the response
72
+
73
+ - \[Rack] Fix exceptions raised on trace submit corrupting the response
38
74
 
39
75
  ### Added
76
+
40
77
  - Rack: Collect redirect locations (#14)
41
78
 
42
79
  ## [1.8.0] - 2019-10-25
80
+
43
81
  ### Added
82
+
44
83
  - Improve compatibility with Rails 6.0
45
84
 
46
85
  ## [1.7.1] - 2019-06-15
86
+
47
87
  ### Fixed
88
+
48
89
  - Reworked Faraday probe to not override connection middleware stack
49
90
 
50
91
  ## [1.7.0] - 2019-05-21
92
+
51
93
  ### Added
94
+
52
95
  - Restify probe: Attach HTTP response status (#12, #13)
53
96
 
54
97
  ## [1.6.2] - 2019-05-16
98
+
55
99
  ### Fixed
100
+
56
101
  - The Faraday probe dropped Faraday's default request encoder
57
102
 
58
103
  ## [1.6.1] - 2019-05-14
104
+
59
105
  ### Fixed
106
+
60
107
  - Fix release pipeline; no code changed
61
108
 
62
109
  ## [1.6.0] - 2019-05-14
110
+
63
111
  ### Added
112
+
64
113
  - Add faraday probe (#11)
65
114
 
66
115
  ## [1.5.1] - 2019-05-14
116
+
67
117
  ### Fixed
118
+
68
119
  - Avoid using internal AMQP constant: Fix compat with amq-protocol 2.3+
69
120
 
70
121
  ## [1.5.0] - 2019-05-14
122
+
71
123
  ### Added
124
+
72
125
  - Add ActiveJob perform probe
73
126
 
74
127
  ### Changed
128
+
75
129
  - Capture endpoint names for grape web requests
76
130
  - `attach_error` accepts errors without backtraces and string messages
77
131
 
78
132
  ## [1.4.0] - 2019-05-14
133
+
79
134
  ### Added
135
+
80
136
  - Add global `#attach_error` for manual error reporting
81
137
 
82
138
  ## [1.3.0] - 2019-05-14
139
+
83
140
  ### Added
141
+
84
142
  - Add exception serialization to trace and protocol
85
143
  - Add exception reporting to Sidekiq, Msgr, Rack and Rails
86
144
 
87
145
  ## [1.2.1] - 2019-05-14
146
+
88
147
  ### Changed
148
+
89
149
  - Improve AMQP connection recovery
90
150
  - Fix dynamic probe loading
91
151
 
92
152
  ## [1.2.0] - 2019-05-14
153
+
93
154
  ### Added
155
+
94
156
  - Collect response metadata in rack instrumentation
95
157
 
96
158
  ## [1.1.0] - 2019-05-14
159
+
97
160
  ### Added
161
+
98
162
  - Add metadata to rack instrumentation
99
163
  - Add msgr server & client instrumentation
100
164
  - Add sidekiq client instrumentation
@@ -102,26 +166,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
102
166
  - Add acfs request parameter tracing
103
167
 
104
168
  ## [1.0.1] - 2019-05-14
169
+
105
170
  ### Fixed
171
+
106
172
  - Fix issue with `enabled` configuration flag (#1)
107
173
 
108
174
  ## [1.0.0] - 2019-05-14
175
+
109
176
  ### Fixed
177
+
110
178
  - Fix issue with acfs middleware on non-tracing contexts
111
179
 
112
180
  ### Changed
181
+
113
182
  - Simplify restify probe to only extend base adapter
114
183
  - Remove FQDN lookup as it failed on missing RDNS
115
184
 
116
185
  ## 0.2.0 - 2019-05-14
186
+
117
187
  ### Changed
188
+
118
189
  - Rename gem to mnemosyne-ruby due to name conflict
119
190
 
120
191
  ### Added
192
+
121
193
  - Add platform identifier
122
194
 
123
- [Unreleased]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.12.1...HEAD
124
- [1.12.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.12.0...v1.12.1
195
+ [Unreleased]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.15.0...HEAD
196
+ [1.15.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.14.0...v1.15.0
197
+ [1.14.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.14.0...v1.13.0
198
+ [1.13.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.13.0...v1.12.1
199
+ [1.12.1]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.12.1...v1.12.0
125
200
  [1.12.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.10.0...v1.12.0
126
201
  [1.11.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.10.0...v1.11.0
127
202
  [1.10.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.9.0...v1.10.0
data/Gemfile CHANGED
@@ -6,11 +6,12 @@ source 'https://rubygems.org'
6
6
  gemspec
7
7
 
8
8
  gem 'rake', '~> 13.0'
9
- gem 'rspec', '~> 3.6'
10
- gem 'rubocop', '~> 1.27.0'
11
- gem 'timecop', '~> 0.9.1'
9
+ gem 'rubocop', '~> 1.56.0'
12
10
 
13
11
  group :test do
12
+ gem 'rspec', '~> 3.6'
13
+ gem 'timecop', '~> 0.9.1'
14
+
14
15
  gem 'faraday'
15
16
  gem 'msgr'
16
17
  gem 'rails'
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  The ruby client plugin for the Mnemosyne monitoring system. It extracts full application traces including cross-application requests for distributed applications (services etc.).
4
4
 
5
- Currently supported probes:
5
+ Supported probes:
6
6
 
7
7
  * Acfs: Remote calls including tracing middleware
8
8
  * ActionController: Processing actions and rendering
@@ -18,20 +18,12 @@ Currently supported probes:
18
18
 
19
19
  ## Installation
20
20
 
21
- Add this line to your application's Gemfile:
21
+ Add this line to your Gemfile:
22
22
 
23
23
  ```ruby
24
24
  gem 'mnemosyne-ruby', '~> 1.0'
25
25
  ```
26
26
 
27
- And then execute:
28
-
29
- $ bundle
30
-
31
- Or install it yourself as:
32
-
33
- $ gem install mnemosyne
34
-
35
27
  Note: Removing support for ancient Ruby or Rails versions will not result in a new major. Please be extra careful when using ancient Ruby or Rails versions and updating gems.
36
28
 
37
29
  ## Usage
@@ -41,4 +33,3 @@ TODO
41
33
  ## License
42
34
 
43
35
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
44
-
@@ -3,18 +3,17 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
- gem "rails", "~> 5.1.0"
12
+ gem "rails"
14
13
  gem "redis"
15
14
  gem "restify"
16
15
  gem "sidekiq"
17
- gem "sqlite3", "~> 1.4"
16
+ gem "sqlite3"
18
17
  gem "webmock"
19
18
  end
20
19
 
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday", "~> 0.9"
12
11
  gem "msgr"
13
12
  gem "rails"
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday", "~> 1.0"
12
11
  gem "msgr"
13
12
  gem "rails"
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
12
  gem "rails", "~> 5.2.0"
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
12
  gem "rails", "~> 6.0.0"
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
12
  gem "rails", "~> 6.1.0"
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
12
  gem "rails", "~> 7.0.0"
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
12
  gem "rails"
@@ -3,18 +3,17 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
- gem "rails", "~> 5.0.0"
14
- gem "redis"
12
+ gem "rails"
13
+ gem "redis", "~> 5.0"
15
14
  gem "restify"
16
15
  gem "sidekiq"
17
- gem "sqlite3", "~> 1.3.6"
16
+ gem "sqlite3"
18
17
  gem "webmock"
19
18
  end
20
19
 
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
12
  gem "rails"
@@ -3,11 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 1.27.0"
8
- gem "timecop", "~> 0.9.1"
9
6
 
10
7
  group :test do
8
+ gem "rspec", "~> 3.6"
9
+ gem "timecop", "~> 0.9.1"
11
10
  gem "faraday"
12
11
  gem "msgr"
13
12
  gem "rails"
@@ -28,14 +28,16 @@ module Mnemosyne
28
28
 
29
29
  raise ArgumentError.new 'Platform is required' if platform.blank?
30
30
 
31
- if @platform =~ /[^a-zA-Z0-9\-]/
32
- raise ArgumentError.new \
31
+ if @platform =~ /[^a-zA-Z0-9-]/
32
+ raise ArgumentError.new(
33
33
  'Platform may only contain alphanumeric characters'
34
+ )
34
35
  end
35
36
 
36
37
  unless @platform =~ /\A[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\z/
37
- raise ArgumentError.new \
38
+ raise ArgumentError.new(
38
39
  'Platform must start and end with a alphanumeric characters'
40
+ )
39
41
  end
40
42
 
41
43
  raise ArgumentError.new('Application is required') if application.blank?
@@ -10,7 +10,7 @@ module Mnemosyne
10
10
 
11
11
  return @app.call(env) unless trace
12
12
 
13
- span = ::Mnemosyne::Span.new 'external.http.faraday', \
13
+ span = ::Mnemosyne::Span.new 'external.http.faraday',
14
14
  meta: {url: env[:url].to_s, method: env[:method]}
15
15
 
16
16
  span.start!
@@ -37,8 +37,8 @@ module Mnemosyne
37
37
  @closed
38
38
  end
39
39
 
40
- def each(*args, &block)
41
- @body.each(*args, &block)
40
+ def each(...)
41
+ @body.each(...)
42
42
  rescue StandardError, LoadError, SyntaxError => e
43
43
  @trace.attach_error(e)
44
44
  raise
@@ -22,7 +22,7 @@ module Mnemosyne
22
22
  callers.shift until callers[0].include? 'lib/acfs/global.rb:'
23
23
 
24
24
  meta = {
25
- backtrace: callers[1..-1]
25
+ backtrace: callers[1..]
26
26
  }
27
27
 
28
28
  span = ::Mnemosyne::Span.new 'external.run.acfs',
@@ -13,7 +13,7 @@ module Mnemosyne
13
13
  end
14
14
 
15
15
  module Instrumentation
16
- def publish(payload, **options)
16
+ def publish(payload, options = {})
17
17
  if (trace = ::Mnemosyne::Instrumenter.current_trace)
18
18
  meta = {}
19
19
  span = ::Mnemosyne::Span.new(NAME, meta: meta)
@@ -6,121 +6,147 @@ module Mnemosyne
6
6
  module Command
7
7
  class Probe < ::Mnemosyne::Probe
8
8
  def setup
9
- ::Redis::Client.prepend ClientPatch
9
+ if Gem::Version.new(::Redis::VERSION) >= Gem::Version.new('5')
10
+ ::RedisClient.register Instrumentation
11
+ else
12
+ ::Redis::Client.prepend ClientPatch
13
+ end
10
14
  end
11
15
 
12
- module ClientPatch
13
- def process(commands)
14
- trace = ::Mnemosyne::Instrumenter.current_trace
15
- return super unless trace
16
+ module Instrumentation
17
+ def call(command, redis_config)
18
+ Instrumentation.instrument([command], client.server_url) { super }
19
+ end
16
20
 
17
- span = ::Mnemosyne::Span.new 'db.query.redis',
18
- meta: extract_span_meta(commands)
21
+ def call_pipelined(commands, redis_config)
22
+ Instrumentation.instrument(commands, client.server_url) { super }
23
+ end
24
+
25
+ class << self
26
+ def instrument(commands, server_url)
27
+ trace = ::Mnemosyne::Instrumenter.current_trace
28
+ return yield unless trace
19
29
 
20
- span.start!
30
+ span = ::Mnemosyne::Span.new 'db.query.redis',
31
+ meta: extract_span_meta(commands, server_url)
21
32
 
22
- super.tap do |retval|
23
- span.meta[:error] = retval.message if retval.is_a?(::Redis::CommandError)
33
+ span.start!
24
34
 
25
- trace << span.finish!
35
+ begin
36
+ yield.tap do |retval|
37
+ span.meta[:error] = retval.message if retval.is_a?(::Redis::CommandError)
38
+
39
+ trace << span.finish!
40
+ end
41
+ rescue StandardError => e
42
+ span.meta[:error] = e.message
43
+ trace << span.finish!
44
+ raise
45
+ end
26
46
  end
27
- end
28
47
 
29
- private
48
+ private
30
49
 
31
- def extract_span_meta(commands)
32
- {
33
- server: id,
50
+ def extract_span_meta(commands, server_url)
51
+ {
52
+ server: server_url,
34
53
 
35
- # Each command is an array, consisting of the command name and any
36
- # arguments. We are only interested in the command name.
37
- commands: extract_command_names(commands),
54
+ # Each command is an array, consisting of the command name and any
55
+ # arguments. We are only interested in the command name.
56
+ commands: extract_command_names(commands),
38
57
 
39
- # If there are multiple commands, that must mean they were pipelined
40
- # (i.e. run in parallel).
41
- pipelined: commands.length > 1
42
- }
43
- end
58
+ # If there are multiple commands, that must mean they were pipelined
59
+ # (i.e. run in parallel).
60
+ pipelined: commands.length > 1
61
+ }
62
+ end
44
63
 
45
- def extract_command_names(commands)
46
- commands.map do |c|
47
- # Depending on how the methods on the Redis gem are called,
48
- # there may be an additional level of nesting.
49
- c = c[0] if c[0].is_a?(Array)
64
+ def extract_command_names(commands)
65
+ commands.map do |c|
66
+ # Depending on how the methods on the Redis gem are called,
67
+ # there may be an additional level of nesting.
68
+ c = c[0] if c[0].is_a?(Array)
50
69
 
51
- # For some commands, we also extract *some* of the arguments.
52
- name, args = parse_name_and_args(c)
70
+ # For some commands, we also extract *some* of the arguments.
71
+ name, args = parse_name_and_args(c)
72
+
73
+ "#{name} #{args}".strip
74
+ end.join("\n")
75
+ end
53
76
 
54
- "#{name} #{args}".strip
55
- end.join("\n")
77
+ ##
78
+ # A map of known commands to the arguments (identified by position)
79
+ # that should be included verbatim in the metadata. Arguments not
80
+ # listed here will be replaced by a "?" character.
81
+ #
82
+ # The value can be a list of safe argument indices, or "*" (all).
83
+ #
84
+ KNOWN_ARGUMENTS = {
85
+ 'BLPOP' => '*',
86
+ 'BRPOP' => '*',
87
+ 'EVALSHA' => [0, 1],
88
+ 'EXISTS' => '*',
89
+ 'EXPIRE' => '*',
90
+ 'GET' => '*',
91
+ 'HGET' => '*',
92
+ 'HGETALL' => '*',
93
+ 'HMGET' => '*',
94
+ 'HMSET' => [0, 1],
95
+ 'HSCAN' => '*',
96
+ 'INCRBY' => '*',
97
+ 'LLEN' => '*',
98
+ 'LPUSH' => [0],
99
+ 'LRANGE' => '*',
100
+ 'LREM' => [0, 1],
101
+ 'MGET' => '*',
102
+ 'MSET' => [0],
103
+ 'RPUSH' => [0],
104
+ 'RPOP' => '*',
105
+ 'SADD' => [0],
106
+ 'SCARD' => '*',
107
+ 'SCAN' => '*',
108
+ 'SCRIPT LOAD' => [],
109
+ 'SET' => [0],
110
+ 'SREM' => [0],
111
+ 'SSCAN' => '*',
112
+ 'UNLINK' => '*',
113
+ 'ZADD' => [0],
114
+ 'ZCARD' => '*',
115
+ 'ZINCRBY' => [0, 1],
116
+ 'ZRANGE' => '*',
117
+ 'ZRANGEBYSCORE' => '*',
118
+ 'ZREM' => [0],
119
+ 'ZREMRANGEBYSCORE' => '*',
120
+ 'ZREVRANGE' => '*',
121
+ 'ZSCAN' => '*'
122
+ }.freeze
123
+
124
+ def parse_name_and_args(command)
125
+ command = command.dup
126
+
127
+ # Symbols and lower-case names are allowed
128
+ name = command.delete_at(0).to_s.upcase
129
+
130
+ allowed = KNOWN_ARGUMENTS[name] || []
131
+ args = case allowed
132
+ when '*' # All arguments considered safe
133
+ command
134
+ when Array # A list of allowed argument indices
135
+ command.each_with_index.map do |arg, index|
136
+ allowed.include?(index) ? arg : '?'
137
+ end
138
+ else # Unknown command - assume nothing is safe
139
+ Array.new(command.length, '?')
140
+ end.join(' ')
141
+
142
+ [name, args]
143
+ end
56
144
  end
145
+ end
57
146
 
58
- ##
59
- # A map of known commands to the arguments (identified by position)
60
- # that should be included verbatim in the metadata. Arguments not
61
- # listed here will be replaced by a "?" character.
62
- #
63
- # The value can be a list of safe argument indices, or "*" (all).
64
- #
65
- KNOWN_ARGUMENTS = {
66
- 'BLPOP' => '*',
67
- 'BRPOP' => '*',
68
- 'EVALSHA' => [0, 1],
69
- 'EXISTS' => '*',
70
- 'EXPIRE' => '*',
71
- 'GET' => '*',
72
- 'HGET' => '*',
73
- 'HGETALL' => '*',
74
- 'HMGET' => '*',
75
- 'HMSET' => [0, 1],
76
- 'HSCAN' => '*',
77
- 'INCRBY' => '*',
78
- 'LLEN' => '*',
79
- 'LPUSH' => [0],
80
- 'LRANGE' => '*',
81
- 'LREM' => [0, 1],
82
- 'MGET' => '*',
83
- 'MSET' => [0],
84
- 'RPUSH' => [0],
85
- 'RPOP' => '*',
86
- 'SADD' => [0],
87
- 'SCARD' => '*',
88
- 'SCAN' => '*',
89
- 'SCRIPT LOAD' => [],
90
- 'SET' => [0],
91
- 'SREM' => [0],
92
- 'SSCAN' => '*',
93
- 'UNLINK' => '*',
94
- 'ZADD' => [0],
95
- 'ZCARD' => '*',
96
- 'ZINCRBY' => [0, 1],
97
- 'ZRANGE' => '*',
98
- 'ZRANGEBYSCORE' => '*',
99
- 'ZREM' => [0],
100
- 'ZREMRANGEBYSCORE' => '*',
101
- 'ZREVRANGE' => '*',
102
- 'ZSCAN' => '*'
103
- }.freeze
104
-
105
- def parse_name_and_args(command)
106
- command = command.dup
107
-
108
- # Symbols and lower-case names are allowed
109
- name = command.delete_at(0).to_s.upcase
110
-
111
- allowed = KNOWN_ARGUMENTS[name] || []
112
- args = case allowed
113
- when '*' # All arguments considered safe
114
- command
115
- when Array # A list of allowed argument indices
116
- command.each_with_index.map do |arg, index|
117
- allowed.include?(index) ? arg : '?'
118
- end
119
- else # Unknown command - assume nothing is safe
120
- Array.new(command.length, '?')
121
- end.join(' ')
122
-
123
- [name, args]
147
+ module ClientPatch
148
+ def process(commands)
149
+ Instrumentation.instrument(commands, id) { super }
124
150
  end
125
151
  end
126
152
  end
@@ -13,9 +13,7 @@ module Mnemosyne
13
13
  def call(request)
14
14
  if (trace = ::Mnemosyne::Instrumenter.current_trace)
15
15
  meta = {url: request.uri.to_s, method: request.method}
16
-
17
- span = ::Mnemosyne::Span.new 'external.http.restify', \
18
- meta: meta
16
+ span = ::Mnemosyne::Span.new 'external.http.restify', meta: meta
19
17
 
20
18
  span.start!
21
19
 
@@ -5,7 +5,7 @@ module Mnemosyne
5
5
  module ViewComponent
6
6
  module RenderComponent
7
7
  class Probe < ::Mnemosyne::Probe
8
- subscribe '!render.view_component'
8
+ subscribe 'render.view_component'
9
9
 
10
10
  def call(trace, _name, start, finish, _id, payload)
11
11
  start = ::Mnemosyne::Clock.to_tick(start)
@@ -3,7 +3,7 @@
3
3
  module Mnemosyne
4
4
  module VERSION
5
5
  MAJOR = 1
6
- MINOR = 13
6
+ MINOR = 15
7
7
  PATCH = 0
8
8
  STAGE = nil
9
9
 
@@ -26,9 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^bin/}) {|f| File.basename(f) }
27
27
  spec.require_paths = %w[lib]
28
28
 
29
- spec.required_ruby_version = '>= 2.5'
29
+ spec.required_ruby_version = '>= 2.7'
30
30
  spec.add_runtime_dependency 'activesupport', '>= 4'
31
31
  spec.add_runtime_dependency 'bunny'
32
-
33
- spec.add_development_dependency 'bundler'
34
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mnemosyne-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-14 00:00:00.000000000 Z
11
+ date: 2023-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  description:
56
42
  email:
57
43
  - jgraichen@altimos.de
@@ -63,23 +49,25 @@ files:
63
49
  - ".github/workflows/lint.yml"
64
50
  - ".github/workflows/test.yml"
65
51
  - ".gitignore"
52
+ - ".markdownlint.yml"
66
53
  - ".rspec"
67
54
  - ".rubocop.yml"
55
+ - ".vscode/ltex.dictionary.en-US.txt"
68
56
  - Appraisals
69
57
  - CHANGELOG.md
70
58
  - Gemfile
71
59
  - LICENSE
72
60
  - README.md
73
61
  - Rakefile
62
+ - gemfiles/core.gemfile
74
63
  - gemfiles/faraday_09.gemfile
75
64
  - gemfiles/faraday_10.gemfile
76
- - gemfiles/rails_50.gemfile
77
- - gemfiles/rails_51.gemfile
78
65
  - gemfiles/rails_52.gemfile
79
66
  - gemfiles/rails_60.gemfile
80
67
  - gemfiles/rails_61.gemfile
81
68
  - gemfiles/rails_70.gemfile
82
69
  - gemfiles/redis_40.gemfile
70
+ - gemfiles/redis_50.gemfile
83
71
  - gemfiles/sidekiq_50.gemfile
84
72
  - gemfiles/sidekiq_60.gemfile
85
73
  - lib/mnemosyne-ruby.rb
@@ -140,14 +128,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
128
  requirements:
141
129
  - - ">="
142
130
  - !ruby/object:Gem::Version
143
- version: '2.5'
131
+ version: '2.7'
144
132
  required_rubygems_version: !ruby/object:Gem::Requirement
145
133
  requirements:
146
134
  - - ">="
147
135
  - !ruby/object:Gem::Version
148
136
  version: '0'
149
137
  requirements: []
150
- rubygems_version: 3.3.3
138
+ rubygems_version: 3.4.18
151
139
  signing_key:
152
140
  specification_version: 4
153
141
  summary: Ruby/Rails client for Mnemosyne APM