better_errors 2.5.1 → 2.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +130 -0
- data/.github/workflows/release.yml +64 -0
- data/.ruby-version +1 -0
- data/Gemfile +6 -1
- data/README.md +34 -2
- data/better_errors.gemspec +3 -1
- data/gemfiles/pry010.gemfile +2 -1
- data/gemfiles/pry011.gemfile +2 -1
- data/gemfiles/pry09.gemfile +2 -1
- data/gemfiles/rack.gemfile +2 -1
- data/gemfiles/rack_boc.gemfile +2 -1
- data/gemfiles/rails42.gemfile +3 -1
- data/gemfiles/rails42_boc.gemfile +3 -1
- data/gemfiles/rails42_haml.gemfile +3 -1
- data/gemfiles/rails50.gemfile +3 -1
- data/gemfiles/rails50_boc.gemfile +3 -1
- data/gemfiles/rails50_haml.gemfile +3 -1
- data/gemfiles/rails51.gemfile +3 -1
- data/gemfiles/rails51_boc.gemfile +3 -1
- data/gemfiles/rails51_haml.gemfile +3 -1
- data/gemfiles/rails52.gemfile +3 -1
- data/gemfiles/rails52_boc.gemfile +3 -1
- data/gemfiles/rails52_haml.gemfile +3 -1
- data/gemfiles/rails60.gemfile +8 -0
- data/gemfiles/rails60_boc.gemfile +9 -0
- data/gemfiles/rails60_haml.gemfile +9 -0
- data/lib/better_errors.rb +20 -33
- data/lib/better_errors/editor.rb +99 -0
- data/lib/better_errors/error_page.rb +31 -4
- data/lib/better_errors/exception_hint.rb +29 -0
- data/lib/better_errors/middleware.rb +59 -12
- data/lib/better_errors/raised_exception.rb +25 -4
- data/lib/better_errors/stack_frame.rb +8 -2
- data/lib/better_errors/templates/main.erb +61 -17
- data/lib/better_errors/templates/text.erb +5 -2
- data/lib/better_errors/templates/variable_info.erb +9 -2
- data/lib/better_errors/version.rb +1 -1
- metadata +28 -7
- data/.travis.yml +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4526a605f0982bee6fd507b813eca6e7185bad35bd14ecd289a0a269afe4ec5e
|
4
|
+
data.tar.gz: 897e7c5a8fd3350b6cba2b1e46feccb872ed519d45d169dbbde9e6ab1c7387ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e9116392957f7941b7217a1e08226587081d55904c6e4722d7af28aba0e47d376f886702e958db5f7d02dfaf1480fe686af154fdf500ff817a67e46c5144a30
|
7
|
+
data.tar.gz: ad5453cf355f951ad5db132454934ebe5efbdfc339f4607985d76ddb9f430a06c55e95dbffdf944ce33c63b344d4a0ef632176d4b3da00d4db4f3561c02acf39
|
@@ -0,0 +1,130 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
schedule:
|
7
|
+
- cron: '0 0 12,26 * *' # roughly every two weeks to run on new Ruby versions
|
8
|
+
pull_request:
|
9
|
+
branches: [ master ]
|
10
|
+
workflow_dispatch:
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
test:
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
strategy:
|
16
|
+
fail-fast: false
|
17
|
+
matrix:
|
18
|
+
ruby:
|
19
|
+
- 2.2
|
20
|
+
- 2.3
|
21
|
+
- 2.4
|
22
|
+
- 2.5
|
23
|
+
- 2.6
|
24
|
+
- 2.7
|
25
|
+
# - ruby-head
|
26
|
+
# - truffleruby-head
|
27
|
+
gemfile:
|
28
|
+
# These are located in the gemfiles/ folder
|
29
|
+
- rails42
|
30
|
+
- rails50
|
31
|
+
- rails51
|
32
|
+
- rails52
|
33
|
+
- rails60
|
34
|
+
- rails42_haml
|
35
|
+
- rails50_haml
|
36
|
+
- rails51_haml
|
37
|
+
- rails52_haml
|
38
|
+
- rails60_haml
|
39
|
+
- rails42_boc
|
40
|
+
- rails50_boc
|
41
|
+
- rails51_boc
|
42
|
+
- rails52_boc
|
43
|
+
- rails60_boc
|
44
|
+
- rack
|
45
|
+
- rack_boc
|
46
|
+
# - pry09
|
47
|
+
# - pry10
|
48
|
+
# - pry11
|
49
|
+
exclude:
|
50
|
+
- { ruby: 2.2, gemfile: rails60 }
|
51
|
+
- { ruby: 2.2, gemfile: rails60_boc }
|
52
|
+
- { ruby: 2.2, gemfile: rails60_haml }
|
53
|
+
- { ruby: 2.3, gemfile: rails42 }
|
54
|
+
- { ruby: 2.3, gemfile: rails42_boc }
|
55
|
+
- { ruby: 2.3, gemfile: rails42_haml }
|
56
|
+
- { ruby: 2.3, gemfile: rails60 }
|
57
|
+
- { ruby: 2.3, gemfile: rails60_boc }
|
58
|
+
- { ruby: 2.3, gemfile: rails60_haml }
|
59
|
+
- { ruby: 2.4, gemfile: rails42 }
|
60
|
+
- { ruby: 2.4, gemfile: rails42_boc }
|
61
|
+
- { ruby: 2.4, gemfile: rails42_haml }
|
62
|
+
- { ruby: 2.4, gemfile: rails60 }
|
63
|
+
- { ruby: 2.4, gemfile: rails60_boc }
|
64
|
+
- { ruby: 2.4, gemfile: rails60_haml }
|
65
|
+
- { ruby: 2.5, gemfile: rails42 }
|
66
|
+
- { ruby: 2.5, gemfile: rails42_boc }
|
67
|
+
- { ruby: 2.5, gemfile: rails42_haml }
|
68
|
+
- { ruby: 2.6, gemfile: rails42 }
|
69
|
+
- { ruby: 2.6, gemfile: rails42_boc }
|
70
|
+
- { ruby: 2.6, gemfile: rails42_haml }
|
71
|
+
- { ruby: 2.7, gemfile: rails42 }
|
72
|
+
- { ruby: 2.7, gemfile: rails42_boc }
|
73
|
+
- { ruby: 2.7, gemfile: rails42_haml }
|
74
|
+
# - { ruby: ruby-head, gemfile: rails42 }
|
75
|
+
# - { ruby: ruby-head, gemfile: rails42_boc }
|
76
|
+
# - { ruby: ruby-head, gemfile: rails42_haml }
|
77
|
+
- { ruby: truffleruby-head, gemfile: rails42_boc }
|
78
|
+
- { ruby: truffleruby-head, gemfile: rails50_boc }
|
79
|
+
- { ruby: truffleruby-head, gemfile: rails51_boc }
|
80
|
+
- { ruby: truffleruby-head, gemfile: rails52_boc }
|
81
|
+
- { ruby: truffleruby-head, gemfile: rails60_boc }
|
82
|
+
- { ruby: truffleruby-head, gemfile: rack_boc }
|
83
|
+
|
84
|
+
steps:
|
85
|
+
|
86
|
+
- uses: actions/checkout@v2
|
87
|
+
|
88
|
+
- name: Set up Ruby
|
89
|
+
uses: ruby/setup-ruby@v1
|
90
|
+
with:
|
91
|
+
ruby-version: ${{ matrix.ruby }}
|
92
|
+
|
93
|
+
- uses: actions/cache@v2
|
94
|
+
with:
|
95
|
+
path: gemfiles/vendor/bundle
|
96
|
+
key: v3-${{ runner.os }}-branch-${{ github.ref }}-ruby-${{ matrix.ruby }}-gemfile-${{ matrix.gemfile }}-${{ hashFiles(format('gemfiles/{0}.gemfile', matrix.gemfile)) }}
|
97
|
+
restore-keys: |
|
98
|
+
v3-${{ runner.os }}-branch-${{ github.ref }}-ruby-${{ matrix.ruby }}-gemfile-${{ matrix.gemfile }}
|
99
|
+
v3-${{ runner.os }}-branch-master-ruby-${{ matrix.ruby }}-gemfile-${{ matrix.gemfile }}
|
100
|
+
|
101
|
+
- name: Bundle install
|
102
|
+
run: |
|
103
|
+
bundle config path vendor/bundle
|
104
|
+
bundle install --jobs 4 --retry 3
|
105
|
+
env:
|
106
|
+
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
|
107
|
+
|
108
|
+
- name: RSpec
|
109
|
+
run: bundle exec rspec -f doc --color
|
110
|
+
env:
|
111
|
+
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
|
112
|
+
|
113
|
+
- name: Report to Coveralls
|
114
|
+
uses: coverallsapp/github-action@v1.1.2
|
115
|
+
with:
|
116
|
+
github-token: ${{ secrets.github_token }}
|
117
|
+
flag-name: test-${{ matrix.ruby }}-${{ matrix.gemfile }}
|
118
|
+
parallel: true
|
119
|
+
|
120
|
+
|
121
|
+
finish:
|
122
|
+
needs: test
|
123
|
+
runs-on: ubuntu-latest
|
124
|
+
steps:
|
125
|
+
|
126
|
+
- name: Report completion to Coveralls
|
127
|
+
uses: coverallsapp/github-action@v1.1.2
|
128
|
+
with:
|
129
|
+
github-token: ${{ secrets.github_token }}
|
130
|
+
parallel-finished: true
|
@@ -0,0 +1,64 @@
|
|
1
|
+
name: Release
|
2
|
+
|
3
|
+
on:
|
4
|
+
release:
|
5
|
+
types: [published]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
build:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
|
11
|
+
steps:
|
12
|
+
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
|
15
|
+
- name: Set up Ruby
|
16
|
+
uses: ruby/setup-ruby@v1
|
17
|
+
with:
|
18
|
+
ruby-version: 2.7
|
19
|
+
|
20
|
+
- uses: actions/cache@v2
|
21
|
+
with:
|
22
|
+
path: vendor/bundle
|
23
|
+
key: v1-${{ runner.os }}-${{ hashFiles('Gemfile', 'better_errors.gemspec') }}
|
24
|
+
restore-keys: |
|
25
|
+
v1-${{ runner.os }}
|
26
|
+
|
27
|
+
- name: Bundle install
|
28
|
+
run: |
|
29
|
+
bundle config path vendor/bundle
|
30
|
+
bundle install --jobs 4 --retry 3
|
31
|
+
|
32
|
+
- name: Get release version
|
33
|
+
id: get_version
|
34
|
+
run: |
|
35
|
+
version="${github_ref//refs\/tags\/v/}"
|
36
|
+
echo "${version}"
|
37
|
+
echo "::set-output name=version::${version}"
|
38
|
+
env:
|
39
|
+
github_ref: ${{ github.ref }}
|
40
|
+
|
41
|
+
- name: Get Release
|
42
|
+
id: get_release
|
43
|
+
uses: bruceadams/get-release@v1.2.2
|
44
|
+
env:
|
45
|
+
GITHUB_TOKEN: ${{ github.token }}
|
46
|
+
|
47
|
+
- name: Set gem version
|
48
|
+
run: |
|
49
|
+
bundle exec gem bump better_errors --version ${{ steps.get_version.outputs.version }} --no-commit
|
50
|
+
|
51
|
+
- name: Build gem
|
52
|
+
run: gem build better_errors.gemspec
|
53
|
+
|
54
|
+
- name: Upload gem to Release
|
55
|
+
uses: actions/upload-release-asset@v1
|
56
|
+
env:
|
57
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
58
|
+
with:
|
59
|
+
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
60
|
+
asset_path: ./better_errors-${{ steps.get_version.outputs.version }}.gem
|
61
|
+
asset_name: better_errors-${{ steps.get_version.outputs.version }}.gem
|
62
|
+
asset_content_type: application/octet-stream
|
63
|
+
|
64
|
+
# TODO: if this release is on master, add a commit updating the version in master.
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.2
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
[![Build Status](https://
|
1
|
+
[![Build Status](https://github.com/BetterErrors/better_errors/workflows/CI/badge.svg?event=push&branch=master)](https://github.com/BetterErrors/better_errors/actions?query=branch%3Amaster)
|
2
2
|
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/6bc3e7d6118d47e6959b16690b815909)](https://www.codacy.com/app/BetterErrors/better_errors?utm_source=github.com&utm_medium=referral&utm_content=BetterErrors/better_errors&utm_campaign=Badge_Grade)
|
3
|
-
[![Coverage](https://coveralls.io/repos/github/BetterErrors/better_errors/badge.svg?branch=master)](https://coveralls.io/github/BetterErrors/better_errors?branch=master)
|
3
|
+
[![Test Coverage](https://coveralls.io/repos/github/BetterErrors/better_errors/badge.svg?branch=master)](https://coveralls.io/github/BetterErrors/better_errors?branch=master)
|
4
4
|
[![Gem Version](https://img.shields.io/gem/v/better_errors.svg)](https://rubygems.org/gems/better_errors)
|
5
5
|
|
6
6
|
# Better Errors
|
@@ -35,6 +35,28 @@ end
|
|
35
35
|
|
36
36
|
_Note: If you discover that Better Errors isn't working - particularly after upgrading from version 0.5.0 or less - be sure to set `config.consider_all_requests_local = true` in `config/environments/development.rb`._
|
37
37
|
|
38
|
+
### Optional: Set `EDITOR`
|
39
|
+
|
40
|
+
For many reasons outside of Better Errors, you should have the `EDITOR` environment variable set to your preferred
|
41
|
+
editor.
|
42
|
+
Better Errors, like many other tools, will use that environment variable to show a link that opens your
|
43
|
+
editor to the file and line from the console.
|
44
|
+
|
45
|
+
By default the links will open TextMate-protocol links.
|
46
|
+
|
47
|
+
To see if your editor is supported or to set up a different editor, see [the wiki](https://github.com/BetterErrors/better_errors/wiki/Link-to-your-editor).
|
48
|
+
|
49
|
+
### Optional: Set `BETTER_ERRORS_INSIDE_FRAME`
|
50
|
+
|
51
|
+
If your application is running inside of an iframe, or if you have a Content Security Policy that disallows links
|
52
|
+
to other protocols, the editor links will not work.
|
53
|
+
|
54
|
+
To work around this set `BETTER_ERRORS_INSIDE_FRAME=1` in the environment, and the links will include `target=_blank`,
|
55
|
+
allowing the link to open regardless of the policy.
|
56
|
+
|
57
|
+
_This works because it opens the editor from a new browser tab, escaping from the restrictions of your site._
|
58
|
+
_Unfortunately it leaves behind an empty tab each time, so only use this if needed._
|
59
|
+
|
38
60
|
## Security
|
39
61
|
|
40
62
|
**NOTE:** It is *critical* you put better\_errors only in the **development** section of your Gemfile.
|
@@ -93,6 +115,16 @@ See [the wiki for instructions on configuring the editor](https://github.com/Bet
|
|
93
115
|
BetterErrors.maximum_variable_inspect_size = 100_000
|
94
116
|
```
|
95
117
|
|
118
|
+
## Ignore inspection of variables with certain classes.
|
119
|
+
|
120
|
+
```ruby
|
121
|
+
# e.g. in config/initializers/better_errors.rb
|
122
|
+
# This will stop BetterErrors from trying to inspect objects of these classes, which can cause
|
123
|
+
# slow loading times and unneccessary database queries. Does not check inheritance chain, use
|
124
|
+
# strings not contants.
|
125
|
+
# default value: ['ActionDispatch::Request', 'ActionDispatch::Response']
|
126
|
+
BetterErrors.ignored_classes = ['ActionDispatch::Request', 'ActionDispatch::Response']
|
127
|
+
```
|
96
128
|
|
97
129
|
## Get in touch!
|
98
130
|
|
data/better_errors.gemspec
CHANGED
@@ -22,9 +22,11 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
s.add_development_dependency "rake", "~> 10.0"
|
24
24
|
s.add_development_dependency "rspec", "~> 3.5"
|
25
|
+
s.add_development_dependency "rspec-html-matchers"
|
25
26
|
s.add_development_dependency "rspec-its"
|
26
27
|
s.add_development_dependency "yard"
|
27
|
-
|
28
|
+
# kramdown 2.1 requires Ruby 2.3+
|
29
|
+
s.add_development_dependency "kramdown", (RUBY_VERSION < '2.3' ? '< 2.0.0' : '> 2.0.0')
|
28
30
|
# simplecov and coveralls must not be included here. See the Gemfiles instead.
|
29
31
|
|
30
32
|
s.add_dependency "erubi", ">= 1.0.0"
|
data/gemfiles/pry010.gemfile
CHANGED
data/gemfiles/pry011.gemfile
CHANGED
data/gemfiles/pry09.gemfile
CHANGED
data/gemfiles/rack.gemfile
CHANGED
data/gemfiles/rack_boc.gemfile
CHANGED
data/gemfiles/rails42.gemfile
CHANGED
@@ -2,7 +2,9 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
gem "rails", "~> 4.2.0"
|
4
4
|
gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7'
|
5
|
+
gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3'
|
5
6
|
|
6
|
-
gem '
|
7
|
+
gem 'simplecov', require: false
|
8
|
+
gem 'simplecov-lcov', require: false
|
7
9
|
|
8
10
|
gemspec path: "../"
|
@@ -2,8 +2,10 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
gem "rails", "~> 4.2.0"
|
4
4
|
gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7'
|
5
|
+
gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3'
|
5
6
|
gem "binding_of_caller"
|
6
7
|
|
7
|
-
gem '
|
8
|
+
gem 'simplecov', require: false
|
9
|
+
gem 'simplecov-lcov', require: false
|
8
10
|
|
9
11
|
gemspec path: "../"
|
@@ -2,8 +2,10 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
gem "rails", "~> 4.2.0"
|
4
4
|
gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7'
|
5
|
+
gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3'
|
5
6
|
gem "haml"
|
6
7
|
|
7
|
-
gem '
|
8
|
+
gem 'simplecov', require: false
|
9
|
+
gem 'simplecov-lcov', require: false
|
8
10
|
|
9
11
|
gemspec path: "../"
|
data/gemfiles/rails50.gemfile
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
3
|
gem "rails", "~> 5.0.0"
|
4
|
+
gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3'
|
4
5
|
gem "binding_of_caller"
|
5
6
|
|
6
|
-
gem '
|
7
|
+
gem 'simplecov', require: false
|
8
|
+
gem 'simplecov-lcov', require: false
|
7
9
|
|
8
10
|
gemspec path: "../"
|
data/gemfiles/rails51.gemfile
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
3
|
gem "rails", "~> 5.1.0"
|
4
|
+
gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3'
|
4
5
|
gem "binding_of_caller"
|
5
6
|
|
6
|
-
gem '
|
7
|
+
gem 'simplecov', require: false
|
8
|
+
gem 'simplecov-lcov', require: false
|
7
9
|
|
8
10
|
gemspec path: "../"
|