rambulance 0.6.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +22 -65
- data/Appraisals +9 -3
- data/CHANGELOG.md +15 -1
- data/Dangerfile +13 -0
- data/README.md +3 -3
- data/gemfiles/rails_52.gemfile +3 -3
- data/gemfiles/rails_60.gemfile +9 -0
- data/lib/generators/rambulance/templates/rambulance.rb +2 -2
- data/lib/rambulance/exceptions_app.rb +7 -14
- data/lib/rambulance/railtie.rb +7 -4
- data/lib/rambulance/version.rb +1 -1
- data/test/fake_app/rails_app.rb +12 -3
- data/test/requests/error_json_test.rb +7 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e7a19e6d38b6d44ff7cfe3cc0589f0bf8575f1e6750bf73df35096822e62d5a
|
4
|
+
data.tar.gz: cf524a57dc3237fc8a182256986fef5178d2efd7d262f85be0b18f8829522d6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a2dd2e048ccde58d0f8f17d47d0d8f4722a7c83e57062a600c4a2c4d4455823b2d73c854ef77fa7e976db24a888f959b5d3068d059822d73fa428404f2f425e
|
7
|
+
data.tar.gz: 14753c604c06c1a6412372cd63066a5aa8af55c5c5c0fba8ef3d7764228aa8cb9d735748eb3fc023570d7c4633482f6e2ad38746a36087a781fe74a2f3d16b28
|
data/.travis.yml
CHANGED
@@ -1,94 +1,51 @@
|
|
1
1
|
language: ruby
|
2
|
-
script: bundle exec rake
|
3
2
|
cache: bundler
|
4
3
|
sudo: false
|
5
4
|
|
5
|
+
script:
|
6
|
+
- bundle exec rake
|
7
|
+
|
6
8
|
before_install:
|
7
9
|
- gem update --system
|
8
|
-
- gem
|
10
|
+
- gem install bundler
|
9
11
|
|
10
12
|
rvm:
|
11
|
-
- 2.
|
12
|
-
- 2.
|
13
|
-
- 2.
|
14
|
-
- 2.3
|
15
|
-
- 2.4.3
|
16
|
-
- 2.5.0
|
13
|
+
- 2.3.8
|
14
|
+
- 2.4.6
|
15
|
+
- 2.5.5
|
16
|
+
- 2.6.3
|
17
17
|
- ruby-head
|
18
|
-
- jruby-9.
|
18
|
+
- jruby-9.2.7.0
|
19
19
|
- jruby-head
|
20
20
|
|
21
21
|
gemfile:
|
22
|
-
- gemfiles/rails_32.gemfile
|
23
|
-
- gemfiles/rails_40.gemfile
|
24
|
-
- gemfiles/rails_41.gemfile
|
25
22
|
- gemfiles/rails_42.gemfile
|
26
23
|
- gemfiles/rails_50.gemfile
|
27
24
|
- gemfiles/rails_51.gemfile
|
28
25
|
- gemfiles/rails_52.gemfile
|
26
|
+
- gemfiles/rails_60.gemfile
|
29
27
|
- gemfiles/rails_edge.gemfile
|
30
28
|
|
31
29
|
matrix:
|
32
30
|
exclude:
|
33
|
-
- rvm: 2.
|
34
|
-
gemfile: gemfiles/
|
35
|
-
- rvm: 2.
|
36
|
-
gemfile: gemfiles/rails_51.gemfile
|
37
|
-
- rvm: 2.0.0
|
38
|
-
gemfile: gemfiles/rails_52.gemfile
|
39
|
-
- rvm: 2.0.0
|
31
|
+
- rvm: 2.3.8
|
32
|
+
gemfile: gemfiles/rails_60.gemfile
|
33
|
+
- rvm: 2.3.8
|
40
34
|
gemfile: gemfiles/rails_edge.gemfile
|
41
|
-
- rvm: 2.
|
42
|
-
gemfile: gemfiles/
|
43
|
-
- rvm: 2.
|
44
|
-
gemfile: gemfiles/rails_51.gemfile
|
45
|
-
- rvm: 2.1
|
46
|
-
gemfile: gemfiles/rails_52.gemfile
|
47
|
-
- rvm: 2.1
|
48
|
-
gemfile: gemfiles/rails_edge.gemfile
|
49
|
-
- rvm: 2.2.9
|
50
|
-
gemfile: gemfiles/rails_32.gemfile
|
51
|
-
- rvm: 2.2.9
|
52
|
-
gemfile: gemfiles/rails_51.gemfile
|
53
|
-
- rvm: 2.2.9
|
35
|
+
- rvm: 2.4.6
|
36
|
+
gemfile: gemfiles/rails_60.gemfile
|
37
|
+
- rvm: 2.4.6
|
54
38
|
gemfile: gemfiles/rails_edge.gemfile
|
55
|
-
- rvm: 2.3
|
56
|
-
gemfile: gemfiles/
|
57
|
-
- rvm: 2.3.6
|
58
|
-
gemfile: gemfiles/rails_edge.gemfile
|
59
|
-
- rvm: 2.4.3
|
60
|
-
gemfile: gemfiles/rails_32.gemfile
|
61
|
-
- rvm: 2.4.3
|
62
|
-
gemfile: gemfiles/rails_40.gemfile
|
63
|
-
- rvm: 2.4.3
|
64
|
-
gemfile: gemfiles/rails_41.gemfile
|
65
|
-
- rvm: 2.5.0
|
66
|
-
gemfile: gemfiles/rails_32.gemfile
|
67
|
-
- rvm: 2.5.0
|
68
|
-
gemfile: gemfiles/rails_40.gemfile
|
69
|
-
- rvm: 2.5.0
|
70
|
-
gemfile: gemfiles/rails_41.gemfile
|
39
|
+
- rvm: 2.6.3
|
40
|
+
gemfile: gemfiles/rails_42.gemfile
|
71
41
|
- rvm: ruby-head
|
72
|
-
gemfile: gemfiles/
|
42
|
+
gemfile: gemfiles/rails_42.gemfile
|
73
43
|
- rvm: ruby-head
|
74
|
-
gemfile: gemfiles/
|
44
|
+
gemfile: gemfiles/rails_50.gemfile
|
75
45
|
- rvm: ruby-head
|
76
|
-
gemfile: gemfiles/
|
77
|
-
- rvm: jruby-9.1.16.0
|
78
|
-
gemfile: gemfiles/rails_32.gemfile
|
79
|
-
- rvm: jruby-9.1.16.0
|
80
|
-
gemfile: gemfiles/rails_40.gemfile
|
81
|
-
- rvm: jruby-9.1.16.0
|
82
|
-
gemfile: gemfiles/rails_41.gemfile
|
83
|
-
- rvm: jruby-head
|
84
|
-
gemfile: gemfiles/rails_32.gemfile
|
85
|
-
- rvm: jruby-head
|
86
|
-
gemfile: gemfiles/rails_40.gemfile
|
87
|
-
- rvm: jruby-head
|
88
|
-
gemfile: gemfiles/rails_41.gemfile
|
46
|
+
gemfile: gemfiles/rails_51.gemfile
|
89
47
|
allow_failures:
|
90
48
|
- rvm: ruby-head
|
91
|
-
- rvm: jruby-9.
|
49
|
+
- rvm: jruby-9.2.7.0
|
92
50
|
- rvm: jruby-head
|
93
51
|
- gemfile: gemfiles/rails_edge.gemfile
|
94
|
-
- gemfile: gemfiles/rails_32.gem
|
data/Appraisals
CHANGED
@@ -43,9 +43,15 @@ appraise "rails_51" do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
appraise "rails_52" do
|
46
|
-
gem "activesupport", "~> 5.2.0
|
47
|
-
gem "actionpack", "~> 5.2.0
|
48
|
-
gem "railties", "~> 5.2.0
|
46
|
+
gem "activesupport", "~> 5.2.0"
|
47
|
+
gem "actionpack", "~> 5.2.0"
|
48
|
+
gem "railties", "~> 5.2.0"
|
49
|
+
end
|
50
|
+
|
51
|
+
appraise "rails_60" do
|
52
|
+
gem "activesupport", "~> 6.0.0.rc1"
|
53
|
+
gem "actionpack", "~> 6.0.0.rc1"
|
54
|
+
gem "railties", "~> 6.0.0.rc1"
|
49
55
|
end
|
50
56
|
|
51
57
|
appraise "rails_edge" do
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## [v0.6.0](https://github.com/yuki24/rambulance/tree/v0.6.0)
|
2
|
+
|
3
|
+
_<sup>released at 2018-03-08 18:36:16 UTC</sup>_
|
4
|
+
|
5
|
+
#### New features
|
6
|
+
|
7
|
+
- Add support for Rails 5.2
|
8
|
+
- Add a test helper method `#with_exceptions_app` for easier testing ([<tt>f5c16b9</tt>](https://github.com/yuki24/rambulance/commit/f5c16b90ecf5eb4903faa30d760bf5863441e9c5), [#27](https://github.com/yuki24/rambulance/pull/27), [@kbaba1001](https://github.com/kbaba1001))
|
9
|
+
|
10
|
+
#### Bug fixes
|
11
|
+
|
12
|
+
- Fixed a bug where an `ActionController::UnknownFormat` error could cause a number of issues ([<tt>1b824e6</tt>](https://github.com/yuki24/rambulance/commit/1b824e6c170479ed90e24df1680dd2dec7c98160), [#41](https://github.com/yuki24/rambulance/issues/41), [#42](https://github.com/yuki24/rambulance/pull/42), [@willnet](https://github.com/willnet), [@joker-777](https://github.com/joker-777))
|
13
|
+
- Fixed a bug where the methods on the `ExceptionApp` weren't easily inspectable ([<tt>6b4c834</tt>](https://github.com/yuki24/rambulance/commit/6b4c834bb0b8e81f619d9f598310ce68f4f9c66b))
|
14
|
+
|
1
15
|
## [v0.5.0](https://github.com/yuki24/rambulance/tree/v0.5.0)
|
2
16
|
|
3
17
|
_<sup>released at 2018-01-02 21:36:02 UTC</sup>_
|
@@ -10,7 +24,7 @@ _<sup>released at 2018-01-02 21:36:02 UTC</sup>_
|
|
10
24
|
#### Breaking changes & deprecations
|
11
25
|
|
12
26
|
- Drop support for Ruby 1.9.3
|
13
|
-
- Drop support for Haml and Slim templates
|
27
|
+
- Drop support for generating Haml and Slim templates on `rails g rambulance:install`
|
14
28
|
|
15
29
|
#### Bug fixes
|
16
30
|
|
data/Dangerfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Sometimes it's a README fix, or something like that - which isn't relevant for
|
2
|
+
# including in a project's CHANGELOG for example
|
3
|
+
declared_trivial = github.pr_title.include? "#trivial"
|
4
|
+
|
5
|
+
# Make it more obvious that a PR is a work in progress and shouldn't be merged yet
|
6
|
+
warn("PR is classed as Work in Progress") if github.pr_title.include? "WIP"
|
7
|
+
|
8
|
+
# Warn when there is a big PR
|
9
|
+
warn("Big PR") if git.lines_of_code > 500
|
10
|
+
|
11
|
+
# Don't let testing shortcuts get into master by accident
|
12
|
+
fail("fdescribe left in tests") if `grep -r fdescribe test/ `.length > 1
|
13
|
+
fail("fit left in tests") if `grep -r fit test/ `.length > 1
|
data/README.md
CHANGED
@@ -94,7 +94,7 @@ $ rails g rambulance:exceptions_app
|
|
94
94
|
|
95
95
|
It'll generate your own custom exceptions app. You can use whatever techniques you use in controllers like `before_filter` and `flash[:notice] = "message..."` since it's a grandchild of `ActionController::Base`!
|
96
96
|
|
97
|
-
**
|
97
|
+
**Note that customizing the exceptions app is strongly discouraged as there would be no guard against bugs that occur in the exceptions app.**
|
98
98
|
|
99
99
|
## Testing
|
100
100
|
|
@@ -132,8 +132,8 @@ Note that testing error pages is not encouraged in Rails as it leads to overuse
|
|
132
132
|
|
133
133
|
## Supported Versions
|
134
134
|
|
135
|
-
* Ruby 2.
|
136
|
-
* Rails
|
135
|
+
* Ruby 2.3, 2,4, 2,5, trunk, JRuby 9.1.16.0, and JRuby head
|
136
|
+
* Rails 4.2, 5.0, 5,1, 5,2 and edge
|
137
137
|
|
138
138
|
Rambulance doesn't work with Rails 3.1 and below since they don't provide a way to use a custom exceptions app.
|
139
139
|
|
data/gemfiles/rails_52.gemfile
CHANGED
@@ -22,12 +22,12 @@ Rambulance.setup do |config|
|
|
22
22
|
}
|
23
23
|
|
24
24
|
# The template name for the layout of the error pages. The default value is
|
25
|
-
# 'error'. For
|
25
|
+
# 'error'. For example, if this value is set to "error_page", Rambulance uses
|
26
26
|
# 'app/views/layout/error_page.html.erb' as a layout for all the error pages.
|
27
27
|
config.layout_name = "error"
|
28
28
|
|
29
29
|
# The directry name to organize error page templates. The default value is
|
30
|
-
# 'errors'. For
|
30
|
+
# 'errors'. For example, if this value is set to "error_pages", Rambulance
|
31
31
|
# uses e.g. 'app/views/error_pages/not_found.html.erb'.
|
32
32
|
config.view_path = "errors"
|
33
33
|
|
@@ -12,11 +12,9 @@ module Rambulance
|
|
12
12
|
class ExceptionsApp < ActionController::Base
|
13
13
|
layout :layout_name
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
TypeError # Rails 3.2 doesn't know about ActionController::BadRequest
|
19
|
-
end
|
15
|
+
if self.respond_to?(:skip_forgery_protection)
|
16
|
+
skip_forgery_protection
|
17
|
+
end
|
20
18
|
|
21
19
|
def self.call(env)
|
22
20
|
exception = env["action_dispatch.exception"]
|
@@ -33,7 +31,7 @@ module Rambulance
|
|
33
31
|
|
34
32
|
def self.local_prefixes
|
35
33
|
[Rambulance.view_path]
|
36
|
-
end
|
34
|
+
end
|
37
35
|
|
38
36
|
ERROR_HTTP_STATUSES.values.each do |status_in_words|
|
39
37
|
eval <<-ACTION, nil, __FILE__, __LINE__ + 1
|
@@ -57,23 +55,18 @@ module Rambulance
|
|
57
55
|
def process_action(*)
|
58
56
|
begin
|
59
57
|
request.GET
|
60
|
-
rescue
|
58
|
+
rescue ActionController::BadRequest
|
61
59
|
request.env["MALFORMED_QUERY_STRING"], request.env["QUERY_STRING"] = request.env["QUERY_STRING"], ""
|
62
60
|
end
|
63
61
|
|
64
62
|
begin
|
65
63
|
request.POST
|
66
|
-
rescue
|
64
|
+
rescue ActionController::BadRequest
|
67
65
|
request.env["MALFORMED_BODY"], request.env["rack.input"] = request.env["rack.input"], StringIO.new
|
68
66
|
end
|
69
67
|
|
70
68
|
# The #formats method needs to be called after the sanitization above.
|
71
|
-
|
72
|
-
request.formats << Mime::Type.lookup('text/plain')
|
73
|
-
elsif request.respond_to?(:format) && status == 406
|
74
|
-
# TODO: Remove this conditional when dropping support for Rails 3.2
|
75
|
-
request.format = Mime::Type.lookup('text/plain')
|
76
|
-
end
|
69
|
+
request.formats << Mime::Type.lookup('text/plain')
|
77
70
|
|
78
71
|
super
|
79
72
|
end
|
data/lib/rambulance/railtie.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
module Rambulance
|
2
2
|
class Railtie < Rails::Railtie
|
3
3
|
initializer 'rambulance', after: :prepend_helpers_path do |app|
|
4
|
-
|
4
|
+
ActiveSupport.on_load(:action_controller) do
|
5
|
+
require "rambulance/exceptions_app"
|
6
|
+
end
|
5
7
|
|
6
|
-
app.config.exceptions_app =
|
8
|
+
app.config.exceptions_app = ->(env) {
|
7
9
|
begin
|
8
10
|
ActiveSupport::Dependencies.load_missing_constant(Object, :ExceptionsApp)
|
9
|
-
|
11
|
+
::ExceptionsApp.call(env)
|
10
12
|
rescue NameError
|
11
|
-
::Rambulance::ExceptionsApp
|
13
|
+
::Rambulance::ExceptionsApp.call(env)
|
12
14
|
end
|
15
|
+
}
|
13
16
|
|
14
17
|
ActiveSupport.on_load(:after_initialize) do
|
15
18
|
Rails.application.routes.append do
|
data/lib/rambulance/version.rb
CHANGED
data/test/fake_app/rails_app.rb
CHANGED
@@ -8,6 +8,10 @@ class TestApp < Rails::Application
|
|
8
8
|
config.eager_load = false
|
9
9
|
config.root = File.dirname(__FILE__)
|
10
10
|
config.autoload_paths += ["#{config.root}/lib"] if ENV["CUSTOM_EXCEPTIONS_APP"]
|
11
|
+
|
12
|
+
if Rails::VERSION::STRING >= "5.2"
|
13
|
+
config.action_controller.default_protect_from_forgery = true
|
14
|
+
end
|
11
15
|
end
|
12
16
|
Rails.backtrace_cleaner.remove_silencers!
|
13
17
|
Rails.application.initialize!
|
@@ -15,7 +19,7 @@ Rails.application.initialize!
|
|
15
19
|
# routes
|
16
20
|
Rails.application.routes.draw do
|
17
21
|
resources :users
|
18
|
-
resources :projects, only: :index
|
22
|
+
resources :projects, only: [:index, :create]
|
19
23
|
end
|
20
24
|
|
21
25
|
# custom exception class
|
@@ -76,11 +80,16 @@ class UsersController < ApplicationController
|
|
76
80
|
end
|
77
81
|
end
|
78
82
|
class ProjectsController < ApplicationController
|
83
|
+
if self.respond_to?(:skip_forgery_protection)
|
84
|
+
skip_forgery_protection
|
85
|
+
end
|
86
|
+
|
79
87
|
if self.respond_to? :skip_before_action
|
80
|
-
skip_before_action :bad_filter
|
88
|
+
skip_before_action :bad_filter, except: :create
|
81
89
|
else
|
82
|
-
skip_filter :bad_filter
|
90
|
+
skip_filter :bad_filter, except: :create
|
83
91
|
end
|
84
92
|
|
85
93
|
def index; end
|
94
|
+
def create; end
|
86
95
|
end
|
@@ -29,6 +29,13 @@ class ErrorJsonTest < ActionDispatch::IntegrationTest
|
|
29
29
|
assert_equal "Page not found", json_response['message']
|
30
30
|
end
|
31
31
|
|
32
|
+
test 'renders an error page on a POST request' do
|
33
|
+
post '/projects.json'
|
34
|
+
|
35
|
+
assert_equal 500, response.status
|
36
|
+
assert_equal "Something went wrong", json_response['message']
|
37
|
+
end
|
38
|
+
|
32
39
|
private
|
33
40
|
|
34
41
|
def without_layouts
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rambulance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuki Nishijima
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- ".travis.yml"
|
149
149
|
- Appraisals
|
150
150
|
- CHANGELOG.md
|
151
|
+
- Dangerfile
|
151
152
|
- Gemfile
|
152
153
|
- LICENSE.txt
|
153
154
|
- README.md
|
@@ -161,6 +162,7 @@ files:
|
|
161
162
|
- gemfiles/rails_50.gemfile
|
162
163
|
- gemfiles/rails_51.gemfile
|
163
164
|
- gemfiles/rails_52.gemfile
|
165
|
+
- gemfiles/rails_60.gemfile
|
164
166
|
- gemfiles/rails_edge.gemfile
|
165
167
|
- lib/generators/rambulance/exceptions_app_generator.rb
|
166
168
|
- lib/generators/rambulance/install_generator.rb
|
@@ -220,8 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
222
|
- !ruby/object:Gem::Version
|
221
223
|
version: '0'
|
222
224
|
requirements: []
|
223
|
-
|
224
|
-
rubygems_version: 2.7.6
|
225
|
+
rubygems_version: 3.0.3
|
225
226
|
signing_key:
|
226
227
|
specification_version: 4
|
227
228
|
summary: Simple and safe way to dynamically generate error pages
|