mnemosyne-ruby 1.11.0 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d21523f741fef0a9443c7c93e81f220183ffd1cf19f7cdd985d69c76dee0ec51
4
- data.tar.gz: ab0c1a21e65bf42ad5bb9eb92539421246643ec195257ca95a5024aa6217589b
3
+ metadata.gz: f726dc01d0fb0ea763c94132859007806f3dfb03df6fda17bf4a755bc6f1c622
4
+ data.tar.gz: bb835bd13a884134036224abeafd7e590949777709b1af89f4b4422ea35406a3
5
5
  SHA512:
6
- metadata.gz: af9d3e285a017330119b9ced137fb3cf4c0059789359620170df6e4a26897036dda5ff787ee5d77d6e6960a77fc6b86443215d46f14def921ba7cbd737edc410
7
- data.tar.gz: 9a36770c25abbdeb8c3ddb38a0fb4424228065fd3c58c364aa52538d0ddf5ca5ead683da36a18604ee71ff08880a9a65c461b536cddeb914d370c03655a34b73
6
+ metadata.gz: 22c8ef3a8a40802efbc25501ad9d8f047c1b9bd5727991a76861a86633549992f39d47ac894f97943fd272183852ed438b5a1302ca42dc002591bcd6e068296b
7
+ data.tar.gz: a30964afb55d3995f4ae051c5ac5b06bb99677e2e0a743fed7accccf1c120e02330831f049bcdb7365d519a1e3907ff8b01d589925a00c67638aa1346697eb71
@@ -1,25 +1,23 @@
1
1
  name: Lint
2
- on: [push]
2
+ on:
3
+ - pull_request
4
+ - push
5
+
3
6
  jobs:
4
7
  rubocop:
5
8
  name: rubocop
6
- runs-on: ubuntu-18.04
9
+ runs-on: ubuntu-20.04
7
10
 
8
11
  steps:
9
12
  - uses: actions/checkout@master
10
- - uses: actions/setup-ruby@v1
11
- with:
12
- ruby-version: 2.6
13
- - uses: actions/cache@v1
13
+ - uses: ruby/setup-ruby@v1
14
+ env:
15
+ BUNDLE_JOBS: 4
16
+ BUNDLE_RETRY: 3
17
+ BUNDLE_WITHOUT: development,test
14
18
  with:
15
- path: vendor
16
- key: v1-ruby-2.6
17
-
18
- - name: Run bundle install
19
- run: |
20
- bundle config path "$(pwd)/vendor/bundle"
21
- bundle config without development,test
22
- bundle install --jobs=4 --retry=3
19
+ ruby-version: 3.0
20
+ bundler-cache: true
23
21
 
24
22
  - name: Run rubocop
25
23
  run: bundle exec rubocop --parallel --color
@@ -0,0 +1,123 @@
1
+ name: Test
2
+ on:
3
+ - push
4
+ - pull_request
5
+
6
+ jobs:
7
+ test:
8
+ name: Ruby ${{ matrix.ruby }} / ${{ matrix.suite }}
9
+ runs-on: ubuntu-20.04
10
+
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ ruby:
15
+ - "3.1"
16
+ - "3.0"
17
+ - "2.7"
18
+ - "2.6"
19
+ - "2.5"
20
+ suite:
21
+ - core
22
+ - faraday-0.9
23
+ - faraday-1.0
24
+ - msgr
25
+ - rack
26
+ - rails-5.0
27
+ - rails-5.1
28
+ - rails-5.2
29
+ - rails-6.0
30
+ - rails-6.1
31
+ - rails-7.0
32
+ - redis-4.0
33
+ - restify
34
+ - sidekiq-5
35
+ - sidekiq-6
36
+ include:
37
+ - suite: core
38
+ spec: --tag ~probe
39
+ - suite: faraday-0.9
40
+ spec: --tag probe:faraday
41
+ gemfile: gemfiles/faraday_09.gemfile
42
+ - suite: faraday-1.0
43
+ spec: --tag probe:faraday
44
+ gemfile: gemfiles/faraday_10.gemfile
45
+ - suite: msgr
46
+ spec: --tag probe:msgr
47
+ - suite: rack
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
55
+ - suite: rails-5.2
56
+ spec: --tag probe:rails --tag ~probe
57
+ gemfile: gemfiles/rails_52.gemfile
58
+ - suite: rails-6.0
59
+ spec: --tag probe:rails --tag ~probe
60
+ gemfile: gemfiles/rails_60.gemfile
61
+ - suite: rails-6.1
62
+ spec: --tag probe:rails --tag ~probe
63
+ gemfile: gemfiles/rails_61.gemfile
64
+ - suite: rails-7.0
65
+ spec: --tag probe:rails --tag ~probe
66
+ gemfile: gemfiles/rails_70.gemfile
67
+ - suite: redis-4.0
68
+ spec: --tag probe:redis
69
+ gemfile: gemfiles/redis_40.gemfile
70
+ - suite: restify
71
+ spec: --tag probe:restify
72
+ - suite: sidekiq-5
73
+ spec: --tag probe:sidekiq
74
+ gemfile: gemfiles/sidekiq_50.gemfile
75
+ - suite: sidekiq-6
76
+ spec: --tag probe:sidekiq
77
+ gemfile: gemfiles/sidekiq_60.gemfile
78
+ exclude:
79
+ - suite: rails-5.0
80
+ ruby: 3.1
81
+ - suite: rails-5.1
82
+ ruby: 3.1
83
+ - 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
89
+ - 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
95
+
96
+ env:
97
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
98
+
99
+ services:
100
+ rabbitmq:
101
+ image: rabbitmq:latest
102
+ ports: [5672/tcp]
103
+ options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
104
+
105
+ steps:
106
+ - uses: actions/checkout@master
107
+ - uses: ruby/setup-ruby@v1
108
+ env:
109
+ BUNDLE_JOBS: 4
110
+ BUNDLE_RETRY: 3
111
+ BUNDLE_WITHOUT: development,test
112
+ with:
113
+ ruby-version: ${{ matrix.ruby }}
114
+ bundler-cache: true
115
+
116
+ - name: Install dependencies
117
+ run: |
118
+ sudo apt install -y redis-server
119
+
120
+ - name: Run rspec
121
+ env:
122
+ AMQP_SERVER: amqp://localhost:${{ job.services.rabbitmq.ports[5672] }}
123
+ run: bundle exec rspec --color ${{ matrix.spec }}
data/.rubocop.yml CHANGED
@@ -3,7 +3,8 @@ AllCops:
3
3
  Exclude:
4
4
  - 'vendor/**/*'
5
5
  - 'gemfiles/**/*'
6
-
6
+ NewCops: enable
7
+ SuggestExtensions: False
7
8
 
8
9
  Layout/ArgumentAlignment:
9
10
  EnforcedStyle: with_fixed_indentation
@@ -26,24 +27,24 @@ Layout/MultilineMethodCallIndentation:
26
27
  Layout/SpaceInsideBlockBraces:
27
28
  EnforcedStyle: space
28
29
  EnforcedStyleForEmptyBraces: no_space
29
- SpaceBeforeBlockParameters: false
30
+ SpaceBeforeBlockParameters: False
30
31
 
31
32
  Layout/SpaceInsideHashLiteralBraces:
32
33
  EnforcedStyle: no_space
33
34
 
34
35
 
35
36
  Metrics/AbcSize:
36
- Enabled: false
37
+ Enabled: False
37
38
 
38
39
  Metrics/BlockLength:
39
40
  Exclude:
40
41
  - 'spec/**/*'
41
42
 
42
43
  Metrics/ParameterLists:
43
- Enabled: false
44
+ Enabled: False
44
45
 
45
46
  Metrics/MethodLength:
46
- Enabled: false
47
+ Enabled: False
47
48
 
48
49
 
49
50
  Naming/FileName:
@@ -51,17 +52,21 @@ Naming/FileName:
51
52
  - lib/mnemosyne-ruby.rb
52
53
 
53
54
 
55
+ # Single attr_reader statements allow easy documentation of attributes.
56
+ Style/AccessorGrouping:
57
+ Enabled: False
58
+
54
59
  Style/Documentation:
55
- Enabled: false
60
+ Enabled: False
56
61
 
57
62
  Style/HashEachMethods:
58
- Enabled: false
63
+ Enabled: False
59
64
 
60
65
  Style/HashTransformKeys:
61
- Enabled: false
66
+ Enabled: False
62
67
 
63
68
  Style/HashTransformValues:
64
- Enabled: false
69
+ Enabled: False
65
70
 
66
71
  Style/RaiseArgs:
67
72
  EnforcedStyle: compact
data/Appraisals CHANGED
@@ -1,29 +1,73 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ appraise 'faraday-09' do
4
+ group :test do
5
+ gem 'faraday', '~> 0.9'
6
+ end
7
+ end
8
+
9
+ appraise 'faraday-10' do
10
+ group :test do
11
+ gem 'faraday', '~> 1.0'
12
+ end
13
+ end
14
+
15
+ appraise 'rails-70' do
16
+ group :test do
17
+ gem 'rails', '~> 7.0.0'
18
+ gem 'sqlite3', '~> 1.4'
19
+ end
20
+ end
21
+
22
+ appraise 'rails-61' do
23
+ group :test do
24
+ gem 'rails', '~> 6.1.0'
25
+ gem 'sqlite3', '~> 1.4'
26
+ end
27
+ end
28
+
3
29
  appraise 'rails-60' do
4
30
  group :test do
5
- gem 'rails', '~> 6.0.0', require: false
6
- gem 'sqlite3', '~> 1.4', require: false
31
+ gem 'rails', '~> 6.0.0'
32
+ gem 'sqlite3', '~> 1.4'
7
33
  end
8
34
  end
9
35
 
10
36
  appraise 'rails-52' do
11
37
  group :test do
12
- gem 'rails', '~> 5.2.0', require: false
13
- gem 'sqlite3', '~> 1.4', require: false
38
+ gem 'rails', '~> 5.2.0'
39
+ gem 'sqlite3', '~> 1.4'
14
40
  end
15
41
  end
16
42
 
17
43
  appraise 'rails-51' do
18
44
  group :test do
19
- gem 'rails', '~> 5.1.0', require: false
20
- gem 'sqlite3', '~> 1.4', require: false
45
+ gem 'rails', '~> 5.1.0'
46
+ gem 'sqlite3', '~> 1.4'
21
47
  end
22
48
  end
23
49
 
24
50
  appraise 'rails-50' do
25
51
  group :test do
26
- gem 'rails', '~> 5.0.0', require: false
27
- gem 'sqlite3', '~> 1.3.6', require: false
52
+ gem 'rails', '~> 5.0.0'
53
+ gem 'sqlite3', '~> 1.3.6'
54
+ end
55
+ end
56
+
57
+ appraise 'redis-40' do
58
+ group :test do
59
+ gem 'redis', '~> 4.0'
60
+ end
61
+ end
62
+
63
+ appraise 'sidekiq-50' do
64
+ group :test do
65
+ gem 'sidekiq', '~> 5.0'
66
+ end
67
+ end
68
+
69
+ appraise 'sidekiq-60' do
70
+ group :test do
71
+ gem 'sidekiq', '~> 6.0'
28
72
  end
29
73
  end
data/CHANGELOG.md CHANGED
@@ -4,6 +4,24 @@ All notable changes to this project will be documented in this file.
4
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
5
 
6
6
  ## [Unreleased]
7
+
8
+ ## [1.13.0] - 2022-04-14
9
+ ### Added
10
+ - Support for `view_component` gem (#42)
11
+ - Support for Ruby 3.1 and Rails 7.0 (formally)
12
+
13
+ ## [1.12.1] - 2022-03-21
14
+ ### Added
15
+ - More commands whitelisted in Redis span metadata (#44)
16
+
17
+ ## [1.12.0] - 2021-08-24
18
+ ### Added
19
+ - Support for `redis` gem (#34)
20
+
21
+ ### Removed
22
+ - Support for Ruby 2.4 (hard gem requirement)
23
+
24
+ ## [1.11.0] - 2020-12-18
7
25
  ### Removed
8
26
  - Support for Ruby 2.4 and Rails 4.2
9
27
 
@@ -102,7 +120,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
102
120
  ### Added
103
121
  - Add platform identifier
104
122
 
105
- [Unreleased]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.10.0...HEAD
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
125
+ [1.12.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.10.0...v1.12.0
126
+ [1.11.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.10.0...v1.11.0
106
127
  [1.10.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.9.0...v1.10.0
107
128
  [1.9.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.8.0...v1.9.0
108
129
  [1.8.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.7.1...v1.8.0
data/Gemfile CHANGED
@@ -5,25 +5,25 @@ source 'https://rubygems.org'
5
5
  # Specify your gem's dependencies in mnemosyne.gemspec
6
6
  gemspec
7
7
 
8
- gem 'rake', '~> 12.0'
8
+ gem 'rake', '~> 13.0'
9
9
  gem 'rspec', '~> 3.6'
10
- gem 'rubocop', '~> 0.80.1'
10
+ gem 'rubocop', '~> 1.27.0'
11
11
  gem 'timecop', '~> 0.9.1'
12
12
 
13
13
  group :test do
14
- gem 'faraday', ENV['FARADAY_VERSION'], require: false
15
- gem 'msgr', ENV['MSGR_VERSION'], require: false
16
- gem 'restify', ENV['RESTIFY_VERSION'], require: false
17
- gem 'sidekiq', ENV['SIDEKIQ_VERSION'], require: false
18
-
19
- gem 'rails', require: false
20
- gem 'sqlite3', require: false
21
- gem 'webmock', require: false
14
+ gem 'faraday'
15
+ gem 'msgr'
16
+ gem 'rails'
17
+ gem 'redis'
18
+ gem 'restify'
19
+ gem 'sidekiq'
20
+ gem 'sqlite3'
21
+ gem 'webmock'
22
22
  end
23
23
 
24
24
  group :development do
25
25
  gem 'appraisal'
26
- gem 'rake-release', '~> 1.2.1'
26
+ gem 'rake-release', '~> 1.3.0'
27
27
 
28
28
  gem 'pry', require: false
29
29
  gem 'pry-byebug', require: false
data/README.md CHANGED
@@ -14,6 +14,7 @@ Currently supported probes:
14
14
  * Restify: Remote calls including tracing middleware
15
15
  * Sidekiq: Client and server tracing
16
16
  * Rack: Middleware for request tracing
17
+ * ViewComponent: Component rendering (needs [additional configuration](https://viewcomponent.org/guide/instrumentation.html))
17
18
 
18
19
  ## Installation
19
20
 
@@ -0,0 +1,28 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.6"
7
+ gem "rubocop", "~> 1.27.0"
8
+ gem "timecop", "~> 0.9.1"
9
+
10
+ group :test do
11
+ gem "faraday", "~> 0.9"
12
+ gem "msgr"
13
+ gem "rails"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3"
18
+ gem "webmock"
19
+ end
20
+
21
+ group :development do
22
+ gem "appraisal"
23
+ gem "rake-release", "~> 1.3.0"
24
+ gem "pry", require: false
25
+ gem "pry-byebug", require: false
26
+ end
27
+
28
+ gemspec path: "../"
@@ -0,0 +1,28 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.6"
7
+ gem "rubocop", "~> 1.27.0"
8
+ gem "timecop", "~> 0.9.1"
9
+
10
+ group :test do
11
+ gem "faraday", "~> 1.0"
12
+ gem "msgr"
13
+ gem "rails"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3"
18
+ gem "webmock"
19
+ end
20
+
21
+ group :development do
22
+ gem "appraisal"
23
+ gem "rake-release", "~> 1.3.0"
24
+ gem "pry", require: false
25
+ gem "pry-byebug", require: false
26
+ end
27
+
28
+ gemspec path: "../"
@@ -2,24 +2,25 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rake", "~> 12.0"
5
+ gem "rake", "~> 13.0"
6
6
  gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 0.80.1"
7
+ gem "rubocop", "~> 1.27.0"
8
8
  gem "timecop", "~> 0.9.1"
9
9
 
10
10
  group :test do
11
- gem "faraday", nil, require: false
12
- gem "msgr", nil, require: false
13
- gem "restify", nil, require: false
14
- gem "sidekiq", nil, require: false
15
- gem "rails", "~> 5.0.0", require: false
16
- gem "sqlite3", "~> 1.3.6", require: false
17
- gem "webmock", require: false
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails", "~> 5.0.0"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3", "~> 1.3.6"
18
+ gem "webmock"
18
19
  end
19
20
 
20
21
  group :development do
21
22
  gem "appraisal"
22
- gem "rake-release", "~> 1.2.1"
23
+ gem "rake-release", "~> 1.3.0"
23
24
  gem "pry", require: false
24
25
  gem "pry-byebug", require: false
25
26
  end
@@ -2,24 +2,25 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rake", "~> 12.0"
5
+ gem "rake", "~> 13.0"
6
6
  gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 0.80.1"
7
+ gem "rubocop", "~> 1.27.0"
8
8
  gem "timecop", "~> 0.9.1"
9
9
 
10
10
  group :test do
11
- gem "faraday", nil, require: false
12
- gem "msgr", nil, require: false
13
- gem "restify", nil, require: false
14
- gem "sidekiq", nil, require: false
15
- gem "rails", "~> 5.1.0", require: false
16
- gem "sqlite3", "~> 1.4", require: false
17
- gem "webmock", require: false
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails", "~> 5.1.0"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3", "~> 1.4"
18
+ gem "webmock"
18
19
  end
19
20
 
20
21
  group :development do
21
22
  gem "appraisal"
22
- gem "rake-release", "~> 1.2.1"
23
+ gem "rake-release", "~> 1.3.0"
23
24
  gem "pry", require: false
24
25
  gem "pry-byebug", require: false
25
26
  end
@@ -2,24 +2,25 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rake", "~> 12.0"
5
+ gem "rake", "~> 13.0"
6
6
  gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 0.80.1"
7
+ gem "rubocop", "~> 1.27.0"
8
8
  gem "timecop", "~> 0.9.1"
9
9
 
10
10
  group :test do
11
- gem "faraday", nil, require: false
12
- gem "msgr", nil, require: false
13
- gem "restify", nil, require: false
14
- gem "sidekiq", nil, require: false
15
- gem "rails", "~> 5.2.0", require: false
16
- gem "sqlite3", "~> 1.4", require: false
17
- gem "webmock", require: false
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails", "~> 5.2.0"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3", "~> 1.4"
18
+ gem "webmock"
18
19
  end
19
20
 
20
21
  group :development do
21
22
  gem "appraisal"
22
- gem "rake-release", "~> 1.2.1"
23
+ gem "rake-release", "~> 1.3.0"
23
24
  gem "pry", require: false
24
25
  gem "pry-byebug", require: false
25
26
  end
@@ -2,24 +2,25 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rake", "~> 12.0"
5
+ gem "rake", "~> 13.0"
6
6
  gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 0.80.1"
7
+ gem "rubocop", "~> 1.27.0"
8
8
  gem "timecop", "~> 0.9.1"
9
9
 
10
10
  group :test do
11
- gem "faraday", nil, require: false
12
- gem "msgr", nil, require: false
13
- gem "restify", nil, require: false
14
- gem "sidekiq", nil, require: false
15
- gem "rails", "~> 6.0.0", require: false
16
- gem "sqlite3", "~> 1.4", require: false
17
- gem "webmock", require: false
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails", "~> 6.0.0"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3", "~> 1.4"
18
+ gem "webmock"
18
19
  end
19
20
 
20
21
  group :development do
21
22
  gem "appraisal"
22
- gem "rake-release", "~> 1.2.1"
23
+ gem "rake-release", "~> 1.3.0"
23
24
  gem "pry", require: false
24
25
  gem "pry-byebug", require: false
25
26
  end
@@ -0,0 +1,28 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.6"
7
+ gem "rubocop", "~> 1.27.0"
8
+ gem "timecop", "~> 0.9.1"
9
+
10
+ group :test do
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails", "~> 6.1.0"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3", "~> 1.4"
18
+ gem "webmock"
19
+ end
20
+
21
+ group :development do
22
+ gem "appraisal"
23
+ gem "rake-release", "~> 1.3.0"
24
+ gem "pry", require: false
25
+ gem "pry-byebug", require: false
26
+ end
27
+
28
+ gemspec path: "../"
@@ -0,0 +1,28 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.6"
7
+ gem "rubocop", "~> 1.27.0"
8
+ gem "timecop", "~> 0.9.1"
9
+
10
+ group :test do
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails", "~> 7.0.0"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3", "~> 1.4"
18
+ gem "webmock"
19
+ end
20
+
21
+ group :development do
22
+ gem "appraisal"
23
+ gem "rake-release", "~> 1.3.0"
24
+ gem "pry", require: false
25
+ gem "pry-byebug", require: false
26
+ end
27
+
28
+ gemspec path: "../"
@@ -0,0 +1,28 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.6"
7
+ gem "rubocop", "~> 1.27.0"
8
+ gem "timecop", "~> 0.9.1"
9
+
10
+ group :test do
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails"
14
+ gem "redis", "~> 4.0"
15
+ gem "restify"
16
+ gem "sidekiq"
17
+ gem "sqlite3"
18
+ gem "webmock"
19
+ end
20
+
21
+ group :development do
22
+ gem "appraisal"
23
+ gem "rake-release", "~> 1.3.0"
24
+ gem "pry", require: false
25
+ gem "pry-byebug", require: false
26
+ end
27
+
28
+ gemspec path: "../"
@@ -0,0 +1,28 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.6"
7
+ gem "rubocop", "~> 1.27.0"
8
+ gem "timecop", "~> 0.9.1"
9
+
10
+ group :test do
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq", "~> 5.0"
17
+ gem "sqlite3"
18
+ gem "webmock"
19
+ end
20
+
21
+ group :development do
22
+ gem "appraisal"
23
+ gem "rake-release", "~> 1.3.0"
24
+ gem "pry", require: false
25
+ gem "pry-byebug", require: false
26
+ end
27
+
28
+ gemspec path: "../"
@@ -0,0 +1,28 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.6"
7
+ gem "rubocop", "~> 1.27.0"
8
+ gem "timecop", "~> 0.9.1"
9
+
10
+ group :test do
11
+ gem "faraday"
12
+ gem "msgr"
13
+ gem "rails"
14
+ gem "redis"
15
+ gem "restify"
16
+ gem "sidekiq", "~> 6.0"
17
+ gem "sqlite3"
18
+ gem "webmock"
19
+ end
20
+
21
+ group :development do
22
+ gem "appraisal"
23
+ gem "rake-release", "~> 1.3.0"
24
+ gem "pry", require: false
25
+ gem "pry-byebug", require: false
26
+ end
27
+
28
+ gemspec path: "../"
@@ -8,7 +8,7 @@ module Mnemosyne
8
8
  end
9
9
 
10
10
  def to_tick(time)
11
- time.to_i * 1_000_000_000 + time.nsec
11
+ (time.to_i * 1_000_000_000) + time.nsec
12
12
  end
13
13
  end
14
14
  end
@@ -33,7 +33,7 @@ module Mnemosyne
33
33
  'Platform may only contain alphanumeric characters'
34
34
  end
35
35
 
36
- unless @platform =~ /\A[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*\z/
36
+ unless @platform =~ /\A[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\z/
37
37
  raise ArgumentError.new \
38
38
  'Platform must start and end with a alphanumeric characters'
39
39
  end
@@ -64,7 +64,7 @@ module Mnemosyne
64
64
  uri.user = amqp[:user]
65
65
  uri.host = amqp[:host]
66
66
  uri.port = amqp[:port] if amqp[:port] != DEFAULT_PORTS[uri.scheme]
67
- uri.path = '/' + ::CGI.escape(amqp[:vhost]) if amqp[:vhost] != '/'
67
+ uri.path = "/#{::CGI.escape(amqp[:vhost])}" if amqp[:vhost] != '/'
68
68
 
69
69
  uri
70
70
  end
@@ -2,11 +2,9 @@
2
2
 
3
3
  module Mnemosyne
4
4
  module Global
5
- def trace(name, meta: {})
5
+ def trace(name, meta: {}, &block)
6
6
  ::ActiveSupport::Notifications.instrument 'trace.mnemosyne',
7
- name: name, meta: meta do
8
- yield
9
- end
7
+ name: name, meta: meta, &block
10
8
  end
11
9
 
12
10
  def attach_error(err)
@@ -5,10 +5,6 @@ require 'faraday'
5
5
  module Mnemosyne
6
6
  module Middleware
7
7
  class Faraday < ::Faraday::Middleware
8
- def initialize(app)
9
- @app = app
10
- end
11
-
12
8
  def call(env)
13
9
  trace = ::Mnemosyne::Instrumenter.current_trace
14
10
 
@@ -22,7 +18,7 @@ module Mnemosyne
22
18
  env[:request_headers].merge!({
23
19
  'X-Mnemosyne-Transaction' => trace.transaction,
24
20
  'X-Mnemosyne-Origin' => span.uuid
25
- }.reject {|_, v| v.nil? })
21
+ }.compact)
26
22
 
27
23
  @app.call(env).on_complete do |env| # rubocop:disable Lint/ShadowingOuterLocalVariable
28
24
  span.meta[:status] = env[:status]
@@ -101,8 +101,8 @@ module Mnemosyne
101
101
  trace.meta[:query] = env['QUERY_STRING']
102
102
  trace.meta[:protocol] = env['SERVER_PROTOCOL']
103
103
  trace.meta[:headers] = {
104
- 'Accept': env['HTTP_ACCEPT'],
105
- 'Host': env['HTTP_HOST'],
104
+ Accept: env['HTTP_ACCEPT'],
105
+ Host: env['HTTP_HOST'],
106
106
  'User-Agent': env['HTTP_USER_AGENT']
107
107
  }
108
108
  end
@@ -0,0 +1,134 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mnemosyne
4
+ module Probes
5
+ module Redis
6
+ module Command
7
+ class Probe < ::Mnemosyne::Probe
8
+ def setup
9
+ ::Redis::Client.prepend ClientPatch
10
+ end
11
+
12
+ module ClientPatch
13
+ def process(commands)
14
+ trace = ::Mnemosyne::Instrumenter.current_trace
15
+ return super unless trace
16
+
17
+ span = ::Mnemosyne::Span.new 'db.query.redis',
18
+ meta: extract_span_meta(commands)
19
+
20
+ span.start!
21
+
22
+ super.tap do |retval|
23
+ span.meta[:error] = retval.message if retval.is_a?(::Redis::CommandError)
24
+
25
+ trace << span.finish!
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def extract_span_meta(commands)
32
+ {
33
+ server: id,
34
+
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),
38
+
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
44
+
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)
50
+
51
+ # For some commands, we also extract *some* of the arguments.
52
+ name, args = parse_name_and_args(c)
53
+
54
+ "#{name} #{args}".strip
55
+ end.join("\n")
56
+ end
57
+
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]
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+
130
+ register 'Redis::Client',
131
+ 'redis',
132
+ Redis::Command::Probe.new
133
+ end
134
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mnemosyne
4
+ module Probes
5
+ module ViewComponent
6
+ module RenderComponent
7
+ class Probe < ::Mnemosyne::Probe
8
+ subscribe '!render.view_component'
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
+ span = ::Mnemosyne::Span.new 'view.render.component.view_component',
15
+ start: start, finish: finish, meta: payload
16
+
17
+ trace << span
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ register nil, nil, ViewComponent::RenderComponent::Probe.new
24
+ end
25
+ end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Mnemosyne
4
4
  class Trace < Span
5
+ BT_REGEXP = /^((?:[a-zA-Z]:)?[^:]+):(\d+)(?::in `([^']+)')?$/.freeze
6
+
5
7
  attr_reader :uuid, :transaction, :origin, :span, :errors
6
8
 
7
9
  def initialize(instrumenter, name, transaction: nil, origin: nil, **kwargs)
@@ -57,8 +59,6 @@ module Mnemosyne
57
59
  end
58
60
 
59
61
  Error = Struct.new(:error) do
60
- BT_REGEXP = /^((?:[a-zA-Z]:)?[^:]+):(\d+)(?::in `([^']+)')?$/.freeze
61
-
62
62
  def serialize
63
63
  {
64
64
  type: error.class.name,
@@ -3,11 +3,11 @@
3
3
  module Mnemosyne
4
4
  module VERSION
5
5
  MAJOR = 1
6
- MINOR = 11
6
+ MINOR = 13
7
7
  PATCH = 0
8
8
  STAGE = nil
9
9
 
10
- STRING = [MAJOR, MINOR, PATCH, STAGE].reject(&:nil?).join('.')
10
+ STRING = [MAJOR, MINOR, PATCH, STAGE].compact.join('.')
11
11
 
12
12
  def self.to_s
13
13
  STRING
data/lib/mnemosyne.rb CHANGED
@@ -42,10 +42,12 @@ module Mnemosyne
42
42
  require 'mnemosyne/probes/grape/endpoint_run_filters'
43
43
  require 'mnemosyne/probes/msgr/client'
44
44
  require 'mnemosyne/probes/msgr/consumer'
45
+ require 'mnemosyne/probes/redis/command'
45
46
  require 'mnemosyne/probes/responder/respond'
46
47
  require 'mnemosyne/probes/restify/base'
47
48
  require 'mnemosyne/probes/sidekiq/client'
48
49
  require 'mnemosyne/probes/sidekiq/server'
50
+ require 'mnemosyne/probes/view_component/render_component'
49
51
  end
50
52
 
51
53
  module Middleware
@@ -14,7 +14,11 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'http://github.com/jgraichen/mnemosyne-ruby'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ spec.metadata = {
18
+ 'rubygems_mfa_required' => 'true'
19
+ }
20
+
21
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
22
  f.match(%r{^(test|spec|features)/})
19
23
  end
20
24
 
@@ -22,6 +26,7 @@ Gem::Specification.new do |spec|
22
26
  spec.executables = spec.files.grep(%r{^bin/}) {|f| File.basename(f) }
23
27
  spec.require_paths = %w[lib]
24
28
 
29
+ spec.required_ruby_version = '>= 2.5'
25
30
  spec.add_runtime_dependency 'activesupport', '>= 4'
26
31
  spec.add_runtime_dependency 'bunny'
27
32
 
data/renovate.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": [
3
+ "config:base"
4
+ ]
5
+ }
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.11.0
4
+ version: 1.13.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: 2020-12-18 00:00:00.000000000 Z
11
+ date: 2022-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -60,22 +60,28 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".editorconfig"
63
- - ".github/workflows/build.yml"
64
63
  - ".github/workflows/lint.yml"
64
+ - ".github/workflows/test.yml"
65
65
  - ".gitignore"
66
66
  - ".rspec"
67
67
  - ".rubocop.yml"
68
- - ".travis.yml"
69
68
  - Appraisals
70
69
  - CHANGELOG.md
71
70
  - Gemfile
72
71
  - LICENSE
73
72
  - README.md
74
73
  - Rakefile
74
+ - gemfiles/faraday_09.gemfile
75
+ - gemfiles/faraday_10.gemfile
75
76
  - gemfiles/rails_50.gemfile
76
77
  - gemfiles/rails_51.gemfile
77
78
  - gemfiles/rails_52.gemfile
78
79
  - gemfiles/rails_60.gemfile
80
+ - gemfiles/rails_61.gemfile
81
+ - gemfiles/rails_70.gemfile
82
+ - gemfiles/redis_40.gemfile
83
+ - gemfiles/sidekiq_50.gemfile
84
+ - gemfiles/sidekiq_60.gemfile
79
85
  - lib/mnemosyne-ruby.rb
80
86
  - lib/mnemosyne.rb
81
87
  - lib/mnemosyne/client.rb
@@ -106,22 +112,26 @@ files:
106
112
  - lib/mnemosyne/probes/mnemosyne/tracer.rb
107
113
  - lib/mnemosyne/probes/msgr/client.rb
108
114
  - lib/mnemosyne/probes/msgr/consumer.rb
115
+ - lib/mnemosyne/probes/redis/command.rb
109
116
  - lib/mnemosyne/probes/responder/respond.rb
110
117
  - lib/mnemosyne/probes/restify/base.rb
111
118
  - lib/mnemosyne/probes/sidekiq/client.rb
112
119
  - lib/mnemosyne/probes/sidekiq/server.rb
120
+ - lib/mnemosyne/probes/view_component/render_component.rb
113
121
  - lib/mnemosyne/railtie.rb
114
122
  - lib/mnemosyne/registry.rb
115
123
  - lib/mnemosyne/span.rb
116
124
  - lib/mnemosyne/trace.rb
117
125
  - lib/mnemosyne/version.rb
118
126
  - mnemosyne-ruby.gemspec
127
+ - renovate.json
119
128
  - scripts/console
120
129
  - scripts/setup
121
130
  homepage: http://github.com/jgraichen/mnemosyne-ruby
122
131
  licenses:
123
132
  - MIT
124
- metadata: {}
133
+ metadata:
134
+ rubygems_mfa_required: 'true'
125
135
  post_install_message:
126
136
  rdoc_options: []
127
137
  require_paths:
@@ -130,14 +140,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
140
  requirements:
131
141
  - - ">="
132
142
  - !ruby/object:Gem::Version
133
- version: '0'
143
+ version: '2.5'
134
144
  required_rubygems_version: !ruby/object:Gem::Requirement
135
145
  requirements:
136
146
  - - ">="
137
147
  - !ruby/object:Gem::Version
138
148
  version: '0'
139
149
  requirements: []
140
- rubygems_version: 3.2.1
150
+ rubygems_version: 3.3.3
141
151
  signing_key:
142
152
  specification_version: 4
143
153
  summary: Ruby/Rails client for Mnemosyne APM
@@ -1,93 +0,0 @@
1
- name: Build
2
- on:
3
- push:
4
- branches-ignore: [debian]
5
-
6
- jobs:
7
- test:
8
- name: Ruby ${{ matrix.ruby }} / ${{ matrix.suite }}
9
- runs-on: ubuntu-18.04
10
-
11
- strategy:
12
- fail-fast: false
13
- matrix:
14
- ruby: ['2.7', '2.6', '2.5']
15
- suite:
16
- - core
17
- - faraday-0.9
18
- - faraday-1.0
19
- - msgr
20
- - rack
21
- - rails-5.0
22
- - rails-5.1
23
- - rails-5.2
24
- - rails-6.0
25
- - restify
26
- - sidekiq-5
27
- - sidekiq-6
28
- include:
29
- - suite: core
30
- spec: --tag ~probe
31
- - suite: faraday-0.9
32
- spec: --tag probe:faraday
33
- env: FARADAY_VERSION='~> 0.9'
34
- - suite: faraday-1.0
35
- spec: --tag probe:faraday
36
- env: FARADAY_VERSION='~> 1.0'
37
- - suite: msgr
38
- spec: --tag probe:msgr
39
- - suite: rack
40
- spec: --tag probe:rack
41
- - suite: rails-5.0
42
- spec: --tag probe:rails --tag ~probe
43
- env: BUNDLE_GEMFILE=gemfiles/rails_50.gemfile
44
- - suite: rails-5.1
45
- spec: --tag probe:rails --tag ~probe
46
- env: BUNDLE_GEMFILE=gemfiles/rails_51.gemfile
47
- - suite: rails-5.2
48
- spec: --tag probe:rails --tag ~probe
49
- env: BUNDLE_GEMFILE=gemfiles/rails_52.gemfile
50
- - suite: rails-6.0
51
- spec: --tag probe:rails --tag ~probe
52
- env: BUNDLE_GEMFILE=gemfiles/rails_60.gemfile
53
- - suite: restify
54
- spec: --tag probe:restify
55
- - suite: sidekiq-5
56
- spec: --tag probe:sidekiq
57
- env: SIDEKIQ_VERSION='~> 5.0'
58
- - suite: sidekiq-6
59
- spec: --tag probe:sidekiq
60
- env: SIDEKIQ_VERSION='~> 6.0'
61
-
62
-
63
- services:
64
- rabbitmq:
65
- image: rabbitmq:latest
66
- ports: [5672/tcp]
67
- options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
68
-
69
- steps:
70
- - uses: actions/checkout@master
71
-
72
- - uses: actions/setup-ruby@v1
73
- with:
74
- ruby-version: ${{ matrix.ruby }}
75
-
76
- - uses: actions/cache@v1
77
- with:
78
- path: vendor
79
- key: v1-ruby-${{ matrix.ruby }}-suite-${{ matrix.suite }}
80
-
81
- - name: Install Ruby dependencies
82
- run: |
83
- set -x
84
- gem install bundler --version '1.17.3'
85
- bundle config path "$(pwd)/vendor/bundle"
86
- bundle config without development
87
- ${{ matrix.env }} bundle update --jobs=$(nproc) --retry=3
88
-
89
- - name: Run rspec
90
- env:
91
- AMQP_SERVER: amqp://localhost:${{ job.services.rabbitmq.ports[5672] }}
92
- run: |
93
- ${{ matrix.env }} bundle exec rspec --color ${{ matrix.spec }}
data/.travis.yml DELETED
@@ -1,41 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- sudo: required
4
- services:
5
- - rabbitmq
6
- addons:
7
- apt:
8
- packages:
9
- - rabbitmq-server
10
- rvm:
11
- - 2.7.0
12
- - 2.6.5
13
- - 2.5.7
14
- - 2.4.9
15
- env:
16
- - SPEC='--tag ~probe'
17
- - SPEC='--tag probe:faraday' FARADAY_VERSION='~> 0.9'
18
- - SPEC='--tag probe:faraday' FARADAY_VERSION='~> 1.0'
19
- - SPEC='--tag probe:msgr'
20
- - SPEC='--tag probe:rack'
21
- - SPEC='--tag probe:rails --tag ~probe' BUNDLE_GEMFILE=gemfiles/rails_42.gemfile
22
- - SPEC='--tag probe:rails --tag ~probe' BUNDLE_GEMFILE=gemfiles/rails_50.gemfile
23
- - SPEC='--tag probe:rails --tag ~probe' BUNDLE_GEMFILE=gemfiles/rails_51.gemfile
24
- - SPEC='--tag probe:rails --tag ~probe' BUNDLE_GEMFILE=gemfiles/rails_52.gemfile
25
- - SPEC='--tag probe:rails --tag ~probe' BUNDLE_GEMFILE=gemfiles/rails_60.gemfile
26
- - SPEC='--tag probe:restify'
27
- - SPEC='--tag probe:sidekiq' SIDEKIQ_VERSION='~> 5.0'
28
- - SPEC='--tag probe:sidekiq' SIDEKIQ_VERSION='~> 6.0'
29
-
30
- before_install:
31
- - echo yes | rvm gemset delete global
32
- - gem install bundler --version '~> 1.0'
33
- script:
34
- - bundle exec rspec ${SPEC}
35
-
36
- matrix:
37
- exclude:
38
- - rvm: 2.4.9
39
- env: SPEC='--tag probe:rails --tag ~probe' BUNDLE_GEMFILE=gemfiles/rails_60.gemfile
40
- - rvm: 2.4.9
41
- env: SPEC='--tag probe:sidekiq' SIDEKIQ_VERSION='~> 6.0'