mnemosyne-ruby 1.10.0 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml 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: "../"