give_back_my_traces 0.1.1 → 0.1.3

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: b3b90f146fc69d87b26e750c8488df198790455e7ef9df8ef3ebd47a5a0b9486
4
- data.tar.gz: 119c08f92ef0953874ff6577ba11eb5967fff7980e8a208a4df0a2c39c7bd983
3
+ metadata.gz: 8a33c10a1184b7bda92c8132962fb79bc59a6f1f04680d80d7603d54b9d10014
4
+ data.tar.gz: 1968735c7bc44474504fe808e1fae4f5ba274daac0c112395bc8353022708dc9
5
5
  SHA512:
6
- metadata.gz: d85098ced00e20dc0eae0c602d71b9a25be76d26bad5756011f676a5ecfa473c625f766864b6768b5ac29de6e1c1827f9d94e6f79c7c2f1eff02a097c236cd26
7
- data.tar.gz: 1c721fb4231841608335e5291853d53920b2057f3af4aa7ed7e5a10f9db904e545cbfe0485c5401cba8a2d529261e27e6fbafb9db4f6662957d823dd858f322b
6
+ metadata.gz: df1b8338dfbccad012766c72ab18b4df0a64b42d8961214bec128b01a2b601d124fe75cb703f51be3c2963ef9fb8d6179f636774983539ecc8b11a815328de66
7
+ data.tar.gz: 9182cae21e229251718691ffadca6b0550aef7693160d240625db2dcac28570fac5857f43305433d7065b5b975eb447ea870d707dfdd29f06c771137433846fd
@@ -1,17 +1,39 @@
1
1
  name: Ruby
2
2
 
3
- on: [push, workflow_dispatch]
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ workflow_dispatch:
7
+ pull_request:
4
8
 
5
9
  jobs:
6
10
  build:
7
11
  runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['2.7', '3.0', '3.1']
15
+
8
16
  steps:
9
17
  - uses: actions/checkout@v2
10
18
  - name: Set up Ruby
11
19
  uses: ruby/setup-ruby@v1
12
20
  with:
13
- ruby-version: 2.7
21
+ ruby-version: ${{ matrix.ruby-version }}
14
22
  bundler-cache: true
15
23
  cache-version: 1
24
+
25
+ - name: Setup Code Climate test-reporter
26
+ if: ${{ matrix.ruby-version }} == '2.7'
27
+ run: |
28
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
29
+ chmod +x ./cc-test-reporter
30
+ ./cc-test-reporter before-build
31
+
16
32
  - name: Run the default task
17
33
  run: bundle exec rake
34
+
35
+ - name: Publish code coverage
36
+ if: ${{ matrix.ruby-version }} == '2.7'
37
+ run: |
38
+ export GIT_BRANCH="${GITHUB_REF/refs\/heads\//}"
39
+ ./cc-test-reporter after-build -r ${{secrets.CC_TEST_REPORTER_ID}}
data/Gemfile CHANGED
@@ -12,3 +12,5 @@ gem "rspec", "~> 3.0"
12
12
  gem "rubocop", "~> 1.36"
13
13
 
14
14
  gem "pry-byebug"
15
+
16
+ gem "simplecov", "~> 0.17.0"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- give_back_my_traces (0.1.1)
4
+ give_back_my_traces (0.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -10,6 +10,7 @@ GEM
10
10
  byebug (11.1.3)
11
11
  coderay (1.1.3)
12
12
  diff-lcs (1.4.4)
13
+ docile (1.4.0)
13
14
  json (2.6.2)
14
15
  method_source (1.0.0)
15
16
  parallel (1.22.1)
@@ -51,6 +52,11 @@ GEM
51
52
  rubocop-ast (1.22.0)
52
53
  parser (>= 3.1.1.0)
53
54
  ruby-progressbar (1.11.0)
55
+ simplecov (0.17.1)
56
+ docile (~> 1.1)
57
+ json (>= 1.8, < 3)
58
+ simplecov-html (~> 0.10.0)
59
+ simplecov-html (0.10.2)
54
60
  unicode-display_width (2.3.0)
55
61
 
56
62
  PLATFORMS
@@ -62,6 +68,7 @@ DEPENDENCIES
62
68
  rake (~> 13.0)
63
69
  rspec (~> 3.0)
64
70
  rubocop (~> 1.36)
71
+ simplecov (~> 0.17.0)
65
72
 
66
73
  BUNDLED WITH
67
74
  2.3.22
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # GiveBackMyTraces
2
2
 
3
+ ![](https://github.com/catks/give_back_my_traces/workflows/Ruby/badge.svg?branch=master)
4
+ [![Maintainability](https://api.codeclimate.com/v1/badges/698f7f3d0cb19d95a2e9/maintainability)](https://codeclimate.com/github/catks/give_back_my_traces/maintainability)
5
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/698f7f3d0cb19d95a2e9/test_coverage)](https://codeclimate.com/github/catks/give_back_my_traces/test_coverage)
6
+
3
7
  GiveBackMyTraces let you discover those sneaky errors in ruby apps.
4
8
 
5
9
  ## Usage
@@ -48,18 +52,21 @@ require 'give_back_my_traces'
48
52
 
49
53
  RSpec.configure do |config|
50
54
  config.around(:each) do |example|
51
- GBMT.init
55
+ GBMT.init(
56
+ from: ENV.fetch("GBMT_BACKTRACE_FROM", Rails.root.to_s) # By default only print errors with a backtrace from your app
57
+ )
52
58
 
53
59
  example.call
54
60
 
55
61
  GBMT.clear
62
+ GBMT.stop
56
63
  end
57
64
  ```
58
65
 
59
66
  And then you can see the errors running it with some GBMT envs:
60
67
 
61
68
  ```
62
- GBMT_ENABLE=1 rspec spec/requests/my_action_spec.rb 2>&1 | head -10
69
+ GBMT_ENABLE=1 rspec spec/requests/my_action_spec.rb
63
70
  ----------------------------------------------------
64
71
  Error: BaseError
65
72
  Message: Test error
@@ -73,6 +80,10 @@ GBMT_ENABLE=1 rspec spec/requests/my_action_spec.rb 2>&1 | head -10
73
80
 
74
81
  ```
75
82
 
83
+ Also you can filter erros by their backtrace with `GBMT_BACKTRACE_FROM`, it could be any string/regexp that matches the first line in the backtrace, eg:
84
+
85
+ `GBMT_ENABLE=1 GBMT_BACKTRACE_FROM='controllers/my_action_controller' rspec spec/requests/my_action_spec.rb`
86
+
76
87
  See more in the examples folder.
77
88
 
78
89
  ## Development
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GiveBackMyTraces
4
+ # class responsible to handle errors that are occurring at Runtime
5
+ class Tracker
6
+ NO_OP = ->(_) {}
7
+
8
+ def initialize(filters: [], **options)
9
+ @filters = filters
10
+ @options = options
11
+ end
12
+
13
+ def call(error)
14
+ return unless valid?(error)
15
+
16
+ print_error(error)
17
+ end
18
+
19
+ private
20
+
21
+ attr_accessor :filters, :options
22
+
23
+ def valid?(error)
24
+ filters.all? { |filter| filter.call(error) }
25
+ end
26
+
27
+ def print_error(error)
28
+ warn GiveBackMyTraces::Helpers.pretty_format(error, **options)
29
+ end
30
+ end
31
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GiveBackMyTraces
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.3"
5
5
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "give_back_my_traces/version"
4
4
  require_relative "give_back_my_traces/errors_collection"
5
+ require_relative "give_back_my_traces/tracker"
5
6
  require_relative "gbmt"
6
7
 
7
8
  # Main module to handle GBMT api
@@ -22,18 +23,25 @@ require_relative "gbmt"
22
23
  # GiveBackMyTraces.errors.pretty_print # Print errors
23
24
  module GiveBackMyTraces
24
25
  class Error < StandardError; end
25
-
26
26
  DEFAULT_CONFIG = {
27
27
  mode: ENV.fetch("GBMT_MODE", :normal).to_sym,
28
28
  backtrace: {
29
29
  max_lines: ENV.fetch("GBMT_BACKTRACE_MAX_LINES", 5).to_i
30
- }
30
+ },
31
+ from: ENV["GBMT_BACKTRACE_FROM"] && Regexp.new(ENV["GBMT_BACKTRACE_FROM"])
31
32
  }.freeze
32
33
 
34
+ FROM_BACKTRACE_FILTER = lambda do |error|
35
+ return true if GiveBackMyTraces.config[:from].nil?
36
+ return false unless error.backtrace
37
+
38
+ error.backtrace.first.match?(GiveBackMyTraces.config[:from])
39
+ end
40
+
33
41
  TRACKERS = {
34
- normal: ->(error) { warn GiveBackMyTraces::Helpers.pretty_format(error) },
35
- silent: ->(_) {},
36
- verbose: ->(error) { warn GiveBackMyTraces::Helpers.pretty_format(error, verbose: true) }
42
+ normal: Tracker.new(filters: [FROM_BACKTRACE_FILTER]),
43
+ silent: Tracker::NO_OP,
44
+ verbose: Tracker.new(filters: [FROM_BACKTRACE_FILTER], verbose: true)
37
45
  }.freeze
38
46
 
39
47
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: give_back_my_traces
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Atkinson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-21 00:00:00.000000000 Z
11
+ date: 2022-10-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -35,6 +35,7 @@ files:
35
35
  - lib/give_back_my_traces.rb
36
36
  - lib/give_back_my_traces/errors_collection.rb
37
37
  - lib/give_back_my_traces/helpers.rb
38
+ - lib/give_back_my_traces/tracker.rb
38
39
  - lib/give_back_my_traces/version.rb
39
40
  homepage: https://github.com/catks/give_back_my_traces
40
41
  licenses: