mnemosyne-ruby 1.11.0 → 1.13.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: 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'