mnemosyne-ruby 1.10.0 → 1.12.1

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: a9e8a2c361a45a3102bf47846a7bccbb18fc795b3689781ac2c5161565f54273
4
- data.tar.gz: 294ff80136968d18669a2f30b140e62a6b61217461e6d1f7ea8bf3d50b001e25
3
+ metadata.gz: cb369932a8e227ce09b8b81c54742d03b7a1c699bd73edc02557723b85e5b97e
4
+ data.tar.gz: 419342c6956721af9a0b7577df4cc52aae25ac054b8235f81c3dfa07a4f1d197
5
5
  SHA512:
6
- metadata.gz: 4a27f68be6b2f522f77bd8cc161fe9c890865c119383acd64100c62d3526e323954e51868c28e275d11fb34d7e0a2a8e87e5e10b40e21cfedd81eced2bb36ca9
7
- data.tar.gz: 7a0224518fbba1af85829fc5547c1d7597bb9f5ecc7b0164dd420db89d41f3d0b2167999b05e206c552b8b6b009871a5c780e7d360c41c993567041920f61b26
6
+ metadata.gz: 27df876e1705c20593a1aa424ac1e5eb86511f82f4aa092adeed6616f185aabd9f33942f9d7b35479516d223c20efcc4d47c27f60e9de37cba410050d97a3abf
7
+ data.tar.gz: 97c48433208e74ac9ad36657d0fd632d6588c9e20dc0a942ceac2e58f72f3d904047395527b550f175ed32ab965ddd1978223bcea9c33a2176ddd5d8b31277f7
@@ -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
@@ -1,28 +1,33 @@
1
- name: Build
1
+ name: Test
2
2
  on:
3
- push:
4
- branches-ignore: [debian]
3
+ - push
4
+ - pull_request
5
5
 
6
6
  jobs:
7
7
  test:
8
8
  name: Ruby ${{ matrix.ruby }} / ${{ matrix.suite }}
9
- runs-on: ubuntu-18.04
9
+ runs-on: ubuntu-20.04
10
10
 
11
11
  strategy:
12
12
  fail-fast: false
13
13
  matrix:
14
- ruby: ['2.7', '2.6', '2.5', '2.4']
14
+ ruby:
15
+ - "3.0"
16
+ - "2.7"
17
+ - "2.6"
18
+ - "2.5"
15
19
  suite:
16
20
  - core
17
21
  - faraday-0.9
18
22
  - faraday-1.0
19
23
  - msgr
20
24
  - rack
21
- - rails-4.2
22
25
  - rails-5.0
23
26
  - rails-5.1
24
27
  - rails-5.2
25
28
  - rails-6.0
29
+ - rails-6.1
30
+ - redis-4.0
26
31
  - restify
27
32
  - sidekiq-5
28
33
  - sidekiq-6
@@ -31,50 +36,50 @@ jobs:
31
36
  spec: --tag ~probe
32
37
  - suite: faraday-0.9
33
38
  spec: --tag probe:faraday
34
- env: FARADAY_VERSION='~> 0.9'
39
+ gemfile: gemfiles/faraday_09.gemfile
35
40
  - suite: faraday-1.0
36
41
  spec: --tag probe:faraday
37
- env: FARADAY_VERSION='~> 1.0'
42
+ gemfile: gemfiles/faraday_10.gemfile
38
43
  - suite: msgr
39
44
  spec: --tag probe:msgr
40
45
  - suite: rack
41
46
  spec: --tag probe:rack
42
- - suite: rails-4.2
43
- spec: --tag probe:rails --tag ~probe
44
- env: BUNDLE_GEMFILE=gemfiles/rails_42.gemfile
45
- bundle_args: _1.17.3_
46
47
  - suite: rails-5.0
47
48
  spec: --tag probe:rails --tag ~probe
48
- env: BUNDLE_GEMFILE=gemfiles/rails_50.gemfile
49
+ gemfile: gemfiles/rails_50.gemfile
49
50
  - suite: rails-5.1
50
51
  spec: --tag probe:rails --tag ~probe
51
- env: BUNDLE_GEMFILE=gemfiles/rails_51.gemfile
52
+ gemfile: gemfiles/rails_51.gemfile
52
53
  - suite: rails-5.2
53
54
  spec: --tag probe:rails --tag ~probe
54
- env: BUNDLE_GEMFILE=gemfiles/rails_52.gemfile
55
+ gemfile: gemfiles/rails_52.gemfile
55
56
  - suite: rails-6.0
56
57
  spec: --tag probe:rails --tag ~probe
57
- env: BUNDLE_GEMFILE=gemfiles/rails_60.gemfile
58
+ gemfile: gemfiles/rails_60.gemfile
59
+ - suite: rails-6.1
60
+ spec: --tag probe:rails --tag ~probe
61
+ gemfile: gemfiles/rails_61.gemfile
62
+ - suite: redis-4.0
63
+ spec: --tag probe:redis
64
+ gemfile: gemfiles/redis_40.gemfile
58
65
  - suite: restify
59
66
  spec: --tag probe:restify
60
67
  - suite: sidekiq-5
61
68
  spec: --tag probe:sidekiq
62
- env: SIDEKIQ_VERSION='~> 5.0'
69
+ gemfile: gemfiles/sidekiq_50.gemfile
63
70
  - suite: sidekiq-6
64
71
  spec: --tag probe:sidekiq
65
- env: SIDEKIQ_VERSION='~> 6.0'
72
+ gemfile: gemfiles/sidekiq_60.gemfile
66
73
  exclude:
67
- - ruby: 2.7
68
- suite: rails-4.2
69
- - ruby: 2.4
70
- suite: rails-6.0
71
- - ruby: 2.4
72
- suite: sidekiq-6
73
- - ruby: 2.3
74
- suite: rails-6.0
75
- - ruby: 2.3
76
- suite: sidekiq-6
74
+ - suite: rails-5.0
75
+ ruby: 3.0
76
+ - suite: rails-5.1
77
+ ruby: 3.0
78
+ - suite: rails-5.2
79
+ ruby: 3.0
77
80
 
81
+ env:
82
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
78
83
 
79
84
  services:
80
85
  rabbitmq:
@@ -84,28 +89,20 @@ jobs:
84
89
 
85
90
  steps:
86
91
  - uses: actions/checkout@master
87
- - uses: actions/setup-ruby@v1
92
+ - uses: ruby/setup-ruby@v1
93
+ env:
94
+ BUNDLE_JOBS: 4
95
+ BUNDLE_RETRY: 3
96
+ BUNDLE_WITHOUT: development,test
88
97
  with:
89
98
  ruby-version: ${{ matrix.ruby }}
90
- architecture: 'x64'
91
- - uses: actions/cache@v1
92
- with:
93
- path: vendor
94
- key: v1-ruby-${{ matrix.ruby }}-suite-${{ matrix.suite }}
99
+ bundler-cache: true
95
100
 
96
- - name: Install debian dependencies
97
- run: sudo apt-get install --yes --quiet libsqlite3-dev
98
-
99
- - name: Install Ruby dependencies
101
+ - name: Install dependencies
100
102
  run: |
101
- set -x
102
- gem install bundler --version '1.17.3'
103
- bundle config path "$(pwd)/vendor/bundle"
104
- bundle config without development
105
- ${{ matrix.env }} bundle ${{ matrix.bundle_args }} update --jobs=$(nproc) --retry=3
103
+ sudo apt install -y redis-server
106
104
 
107
105
  - name: Run rspec
108
106
  env:
109
107
  AMQP_SERVER: amqp://localhost:${{ job.services.rabbitmq.ports[5672] }}
110
- run: |
111
- ${{ matrix.env }} bundle exec rspec --color ${{ matrix.spec }}
108
+ run: bundle exec rspec --color ${{ matrix.spec }}
data/.rubocop.yml CHANGED
@@ -1,9 +1,10 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.3
2
+ TargetRubyVersion: 2.5
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,36 +1,66 @@
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-61' do
16
+ group :test do
17
+ gem 'rails', '~> 6.1.0'
18
+ gem 'sqlite3', '~> 1.4'
19
+ end
20
+ end
21
+
3
22
  appraise 'rails-60' do
4
23
  group :test do
5
- gem 'rails', '~> 6.0.0', require: false
6
- gem 'sqlite3', '~> 1.4', require: false
24
+ gem 'rails', '~> 6.0.0'
25
+ gem 'sqlite3', '~> 1.4'
7
26
  end
8
27
  end
9
28
 
10
29
  appraise 'rails-52' do
11
30
  group :test do
12
- gem 'rails', '~> 5.2.0', require: false
13
- gem 'sqlite3', '~> 1.4', require: false
31
+ gem 'rails', '~> 5.2.0'
32
+ gem 'sqlite3', '~> 1.4'
14
33
  end
15
34
  end
16
35
 
17
36
  appraise 'rails-51' do
18
37
  group :test do
19
- gem 'rails', '~> 5.1.0', require: false
20
- gem 'sqlite3', '~> 1.4', require: false
38
+ gem 'rails', '~> 5.1.0'
39
+ gem 'sqlite3', '~> 1.4'
21
40
  end
22
41
  end
23
42
 
24
43
  appraise 'rails-50' do
25
44
  group :test do
26
- gem 'rails', '~> 5.0.0', require: false
27
- gem 'sqlite3', '~> 1.3.6', require: false
45
+ gem 'rails', '~> 5.0.0'
46
+ gem 'sqlite3', '~> 1.3.6'
47
+ end
48
+ end
49
+
50
+ appraise 'redis-40' do
51
+ group :test do
52
+ gem 'redis', '~> 4.0'
53
+ end
54
+ end
55
+
56
+ appraise 'sidekiq-50' do
57
+ group :test do
58
+ gem 'sidekiq', '~> 5.0'
28
59
  end
29
60
  end
30
61
 
31
- appraise 'rails-42' do
62
+ appraise 'sidekiq-60' do
32
63
  group :test do
33
- gem 'rails', '~> 4.2.0', require: false
34
- gem 'sqlite3', '~> 1.3.6', require: false
64
+ gem 'sidekiq', '~> 6.0'
35
65
  end
36
66
  end
data/CHANGELOG.md CHANGED
@@ -5,6 +5,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.12.1] - 2022-03-21
9
+ ### Added
10
+ - More commands whitelisted in Redis span metadata (#44)
11
+
12
+ ## [1.12.0] - 2021-08-24
13
+ ### Added
14
+ - Support for `redis` gem (#34)
15
+
16
+ ### Removed
17
+ - Support for Ruby 2.4 (hard gem requirement)
18
+
19
+ ## [1.11.0] - 2020-12-18
20
+ ### Removed
21
+ - Support for Ruby 2.4 and Rails 4.2
22
+
23
+ ### Fixed
24
+ - Deprecation warnings due to block capture and keyword arguments
25
+
8
26
  ## [1.10.0] - 2020-03-05
9
27
  ### Added
10
28
  - Support for Faraday 1.0
@@ -97,7 +115,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
97
115
  ### Added
98
116
  - Add platform identifier
99
117
 
100
- [Unreleased]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.10.0...HEAD
118
+ [Unreleased]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.12.1...HEAD
119
+ [1.12.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.12.0...v1.12.1
120
+ [1.12.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.10.0...v1.12.0
121
+ [1.11.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.10.0...v1.11.0
101
122
  [1.10.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.9.0...v1.10.0
102
123
  [1.9.0]: https://github.com/mnemosyne-mon/mnemosyne-ruby/compare/v1.8.0...v1.9.0
103
124
  [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.26.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
@@ -31,6 +31,8 @@ Or install it yourself as:
31
31
 
32
32
  $ gem install mnemosyne
33
33
 
34
+ 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.
35
+
34
36
  ## Usage
35
37
 
36
38
  TODO
@@ -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.19.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.19.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,23 +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.67.1"
7
+ gem "rubocop", "~> 1.19.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"
23
+ gem "rake-release", "~> 1.3.0"
22
24
  gem "pry", require: false
23
25
  gem "pry-byebug", require: false
24
26
  end
@@ -2,23 +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.67.1"
7
+ gem "rubocop", "~> 1.19.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"
23
+ gem "rake-release", "~> 1.3.0"
22
24
  gem "pry", require: false
23
25
  gem "pry-byebug", require: false
24
26
  end
@@ -2,23 +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.67.1"
7
+ gem "rubocop", "~> 1.19.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"
23
+ gem "rake-release", "~> 1.3.0"
22
24
  gem "pry", require: false
23
25
  gem "pry-byebug", require: false
24
26
  end
@@ -2,23 +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.67.1"
7
+ gem "rubocop", "~> 1.19.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"
23
+ gem "rake-release", "~> 1.3.0"
22
24
  gem "pry", require: false
23
25
  gem "pry-byebug", require: false
24
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.19.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.19.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.19.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.19.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)
@@ -31,7 +31,7 @@ module Mnemosyne
31
31
  return trace
32
32
  end
33
33
 
34
- trace = self.current_trace = Trace.new(self, name, kwargs)
34
+ trace = self.current_trace = Trace.new(self, name, **kwargs)
35
35
 
36
36
  return trace unless block_given?
37
37
 
@@ -85,10 +85,10 @@ module Mnemosyne
85
85
  @instance = old
86
86
  end
87
87
 
88
- def trace(*args)
88
+ def trace(*args, **kwargs)
89
89
  return unless (instrumenter = instance)
90
90
 
91
- instrumenter.trace(*args)
91
+ instrumenter.trace(*args, **kwargs)
92
92
  end
93
93
 
94
94
  def current_trace
@@ -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]
@@ -16,14 +16,9 @@ module Mnemosyne
16
16
  @body.respond_to?(*args)
17
17
  end
18
18
 
19
- def method_missing(*args)
19
+ def method_missing(*args, &block)
20
20
  super if args.first && args.first.to_s == 'to_ary'
21
-
22
- if block_given?
23
- @body.__send__(*args, &Proc.new)
24
- else
25
- @body.__send__(*args)
26
- end
21
+ @body.__send__(*args, &block)
27
22
  end
28
23
 
29
24
  def close
@@ -42,8 +37,8 @@ module Mnemosyne
42
37
  @closed
43
38
  end
44
39
 
45
- def each(*args)
46
- @body.each(*args, &Proc.new)
40
+ def each(*args, &block)
41
+ @body.each(*args, &block)
47
42
  rescue StandardError, LoadError, SyntaxError => e
48
43
  @trace.attach_error(e)
49
44
  raise
@@ -106,8 +101,8 @@ module Mnemosyne
106
101
  trace.meta[:query] = env['QUERY_STRING']
107
102
  trace.meta[:protocol] = env['SERVER_PROTOCOL']
108
103
  trace.meta[:headers] = {
109
- 'Accept': env['HTTP_ACCEPT'],
110
- 'Host': env['HTTP_HOST'],
104
+ Accept: env['HTTP_ACCEPT'],
105
+ Host: env['HTTP_HOST'],
111
106
  'User-Agent': env['HTTP_USER_AGENT']
112
107
  }
113
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
@@ -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 = 10
7
- PATCH = 0
6
+ MINOR = 12
7
+ PATCH = 1
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,6 +42,7 @@ 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'
@@ -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.10.0
4
+ version: 1.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-05 00:00:00.000000000 Z
11
+ date: 2022-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -60,23 +60,27 @@ 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
75
- - gemfiles/rails_42.gemfile
74
+ - gemfiles/faraday_09.gemfile
75
+ - gemfiles/faraday_10.gemfile
76
76
  - gemfiles/rails_50.gemfile
77
77
  - gemfiles/rails_51.gemfile
78
78
  - gemfiles/rails_52.gemfile
79
79
  - gemfiles/rails_60.gemfile
80
+ - gemfiles/rails_61.gemfile
81
+ - gemfiles/redis_40.gemfile
82
+ - gemfiles/sidekiq_50.gemfile
83
+ - gemfiles/sidekiq_60.gemfile
80
84
  - lib/mnemosyne-ruby.rb
81
85
  - lib/mnemosyne.rb
82
86
  - lib/mnemosyne/client.rb
@@ -107,6 +111,7 @@ files:
107
111
  - lib/mnemosyne/probes/mnemosyne/tracer.rb
108
112
  - lib/mnemosyne/probes/msgr/client.rb
109
113
  - lib/mnemosyne/probes/msgr/consumer.rb
114
+ - lib/mnemosyne/probes/redis/command.rb
110
115
  - lib/mnemosyne/probes/responder/respond.rb
111
116
  - lib/mnemosyne/probes/restify/base.rb
112
117
  - lib/mnemosyne/probes/sidekiq/client.rb
@@ -117,12 +122,14 @@ files:
117
122
  - lib/mnemosyne/trace.rb
118
123
  - lib/mnemosyne/version.rb
119
124
  - mnemosyne-ruby.gemspec
125
+ - renovate.json
120
126
  - scripts/console
121
127
  - scripts/setup
122
128
  homepage: http://github.com/jgraichen/mnemosyne-ruby
123
129
  licenses:
124
130
  - MIT
125
- metadata: {}
131
+ metadata:
132
+ rubygems_mfa_required: 'true'
126
133
  post_install_message:
127
134
  rdoc_options: []
128
135
  require_paths:
@@ -131,14 +138,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
138
  requirements:
132
139
  - - ">="
133
140
  - !ruby/object:Gem::Version
134
- version: '0'
141
+ version: '2.5'
135
142
  required_rubygems_version: !ruby/object:Gem::Requirement
136
143
  requirements:
137
144
  - - ">="
138
145
  - !ruby/object:Gem::Version
139
146
  version: '0'
140
147
  requirements: []
141
- rubygems_version: 3.0.6
148
+ rubygems_version: 3.1.6
142
149
  signing_key:
143
150
  specification_version: 4
144
151
  summary: Ruby/Rails client for Mnemosyne APM
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'
@@ -1,26 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rake", "~> 12.0"
6
- gem "rspec", "~> 3.6"
7
- gem "rubocop", "~> 0.67.1"
8
- gem "timecop", "~> 0.9.1"
9
-
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", "~> 4.2.0", require: false
16
- gem "sqlite3", "~> 1.3.6", require: false
17
- gem "webmock", require: false
18
- end
19
-
20
- group :development do
21
- gem "appraisal"
22
- gem "pry", require: false
23
- gem "pry-byebug", require: false
24
- end
25
-
26
- gemspec path: "../"