rambulance 2.3.0 → 3.1.0

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: 88ab78d4adf6b58a2a0206350009d9cf58577837d3a7dc9fc5bef1ca25fe23d5
4
- data.tar.gz: 6f24e7cbf7a825b5e762e626e2799ad0491fcb46f0c3ea7cbbb72e397ee43e9f
3
+ metadata.gz: 71f3781bf725a20d74a6f2d8d2320672072044e5ecee1aa4e4000739ef15581e
4
+ data.tar.gz: e6d8fac7b73d483f4033f15643d5e38d0f9643a21d843318087550979434cfb0
5
5
  SHA512:
6
- metadata.gz: 82ae05f28f01beb391c7988a6f993d76b1a81596d5da73645284e22f5328a78cc1294bd4e5f96c5603cb82872e69a057f6e620ed44221ee4a18e68d313b5016a
7
- data.tar.gz: 432400598a5d82a59f7f1613d2443b320c1ab7943465183bd70258df9581d5ddd77b06117f98d54e452a990c05277100195fd584f15c086c6fd40598776a02aa
6
+ metadata.gz: c9f0f56788587ddc1057df037a3adf384e1ae1edd7613244d174f7c851ca22ddc056f118ea2489c1c5ca86aa20e724eee215457b6b118fe9b31a6ea0936cf532
7
+ data.tar.gz: 56c981eb197bb799e4a809c2a1477bfb5b60c5a24ea5a93d8972d3df92c9256552fe4962c016d29419599dd6bf911e48b75005c400d63015d04095d0a41ab89e
@@ -8,17 +8,17 @@ jobs:
8
8
  strategy:
9
9
  matrix:
10
10
  ruby_version:
11
+ - '3.3'
11
12
  - '3.2'
12
13
  - '3.1'
13
14
  - '3.0'
14
15
  - '2.7'
15
16
  - '2.6'
16
17
  - '2.5'
17
- - '2.4'
18
- - '2.3'
19
18
  - 'jruby-9.3'
20
19
  - 'jruby-9.4'
21
20
  gemfile:
21
+ - gemfiles/rails_71.gemfile
22
22
  - gemfiles/rails_70.gemfile
23
23
  - gemfiles/rails_61.gemfile
24
24
  - gemfiles/rails_60.gemfile
@@ -27,6 +27,18 @@ jobs:
27
27
  - gemfiles/rails_50.gemfile
28
28
  - gemfiles/rails_42.gemfile
29
29
  exclude:
30
+ - ruby_version: '3.3'
31
+ gemfile: gemfiles/rails_61.gemfile
32
+ - ruby_version: '3.3'
33
+ gemfile: gemfiles/rails_60.gemfile
34
+ - ruby_version: '3.3'
35
+ gemfile: gemfiles/rails_52.gemfile
36
+ - ruby_version: '3.3'
37
+ gemfile: gemfiles/rails_51.gemfile
38
+ - ruby_version: '3.3'
39
+ gemfile: gemfiles/rails_50.gemfile
40
+ - ruby_version: '3.3'
41
+ gemfile: gemfiles/rails_42.gemfile
30
42
  - ruby_version: '3.2'
31
43
  gemfile: gemfiles/rails_61.gemfile
32
44
  - ruby_version: '3.2'
@@ -57,6 +69,8 @@ jobs:
57
69
  gemfile: gemfiles/rails_50.gemfile
58
70
  - ruby_version: '3.0'
59
71
  gemfile: gemfiles/rails_42.gemfile
72
+ - ruby_version: '2.7'
73
+ gemfile: gemfiles/rails_71.gemfile
60
74
  - ruby_version: '2.7'
61
75
  gemfile: gemfiles/rails_70.gemfile
62
76
  - ruby_version: '2.7'
@@ -67,24 +81,18 @@ jobs:
67
81
  gemfile: gemfiles/rails_50.gemfile
68
82
  - ruby_version: '2.7'
69
83
  gemfile: gemfiles/rails_42.gemfile
84
+ - ruby_version: '2.6'
85
+ gemfile: gemfiles/rails_71.gemfile
70
86
  - ruby_version: '2.6'
71
87
  gemfile: gemfiles/rails_70.gemfile
72
88
  - ruby_version: '2.6'
73
89
  gemfile: gemfiles/rails_42.gemfile
90
+ - ruby_version: '2.5'
91
+ gemfile: gemfiles/rails_71.gemfile
74
92
  - ruby_version: '2.5'
75
93
  gemfile: gemfiles/rails_70.gemfile
76
- - ruby_version: '2.4'
77
- gemfile: gemfiles/rails_70.gemfile
78
- - ruby_version: '2.4'
79
- gemfile: gemfiles/rails_61.gemfile
80
- - ruby_version: '2.4'
81
- gemfile: gemfiles/rails_60.gemfile
82
- - ruby_version: '2.3'
83
- gemfile: gemfiles/rails_70.gemfile
84
- - ruby_version: '2.3'
85
- gemfile: gemfiles/rails_61.gemfile
86
- - ruby_version: '2.3'
87
- gemfile: gemfiles/rails_60.gemfile
94
+ - ruby_version: 'jruby-9.3'
95
+ gemfile: gemfiles/rails_71.gemfile
88
96
  - ruby_version: 'jruby-9.3'
89
97
  gemfile: gemfiles/rails_70.gemfile
90
98
  - ruby_version: 'jruby-9.3'
@@ -126,7 +134,7 @@ jobs:
126
134
  - name: Set up Ruby
127
135
  uses: ruby/setup-ruby@v1
128
136
  with:
129
- ruby-version: 3.2
137
+ ruby-version: 3.3
130
138
  bundler-cache: true
131
139
  - run: bundle exec rake
132
140
 
@@ -140,7 +148,7 @@ jobs:
140
148
  - 'jruby-head'
141
149
  gemfile:
142
150
  - gemfiles/rails_edge.gemfile
143
- - gemfiles/rails_70.gemfile
151
+ - gemfiles/rails_71.gemfile
144
152
  runs-on: ubuntu-22.04
145
153
  env:
146
154
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
data/Appraisals CHANGED
@@ -43,6 +43,12 @@ appraise "rails_70" do
43
43
  gem "railties", "~> 7.0.0"
44
44
  end
45
45
 
46
+ appraise "rails_71" do
47
+ gem "activesupport", "~> 7.1.0"
48
+ gem "actionpack", "~> 7.1.0"
49
+ gem "railties", "~> 7.1.0"
50
+ end
51
+
46
52
  appraise "rails_edge" do
47
53
  git 'https://github.com/rails/rails.git' do
48
54
  gem "activesupport", require: 'active_support'
data/CHANGELOG.md CHANGED
@@ -1,6 +1,37 @@
1
- ## v2.2.0
1
+ ## v3.1.0
2
2
 
3
- _<sup>released at 2022-02-22 07:52:27 UTC</sup>_
3
+ _<sup>released at 2024-01-04 10:04:32 UTC</sup>_
4
+
5
+ #### New Features
6
+
7
+ - The test helper is now compatible with Rails Edge (8.0) (#73, #75)
8
+ - Add support for Ruby 3.3 (#74)
9
+
10
+ ## [v3.0.0](https://github.com/yuki24/rambulance/tree/v3.0.0)
11
+
12
+ _<sup>released at 2023-09-22 14:47:24 UTC</sup>_
13
+
14
+ #### New Features
15
+
16
+ - Add support for Rails 7.1 ([<tt>be6f129</tt>](https://github.com/yuki24/rambulance/commit/be6f129dd4c1d190e90a3036f7f1099028ef4a1e))
17
+
18
+ #### Breaking Changes
19
+
20
+ - Drop support for Ruby 2.3 and 2.4 ([<tt>c0d3439</tt>](https://github.com/yuki24/rambulance/commit/c0d3439d64552a88cb934d57bc57d2c06ff593c9))
21
+
22
+ ## [v2.3.0](https://github.com/yuki24/rambulance/tree/v2.3.0)
23
+
24
+ _<sup>released at 2023-01-05 05:33:36 UTC</sup>_
25
+
26
+ #### New Features
27
+
28
+ - Ruby 3.2 is now officially supported.
29
+
30
+ ## [v2.2.0](https://github.com/yuki24/rambulance/tree/v2.2.0)
31
+
32
+ _<sup>released at 2022-02-13 07:56:32 UTC</sup>_
33
+
34
+ #### Features
4
35
 
5
36
  - Add support for Ruby 3.1, Rails 7.0 and JRuby 9.3.3.0
6
37
 
data/README.md CHANGED
@@ -83,7 +83,7 @@ If you want to do some more things in a exceptions app, you can also write your
83
83
  $ rails g rambulance:exceptions_app
84
84
  ```
85
85
 
86
- It will generate your own custom exceptions app. You can use whatever techniques you want to use in controllers like `before_filter` and `flash[:notice] = "message..."` since it's a grandchild of `ActionController::Base`!
86
+ It will generate your own custom exceptions app. You can use most techniques you want to use in controllers like `before_filter` and rendering views since it's a grandchild of `ActionController::Base`! However there are still some restrictions, e.g. setting a flash notice works when rendering directly but not when redirecting because the ActionDispatch::Flash middleware is never hit.
87
87
 
88
88
  **Heavily customizing the exceptions app is strongly discouraged as there would be no guard against bugs that occur in the exceptions app.**
89
89
 
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 7.1.0"
6
+ gem "actionpack", "~> 7.1.0"
7
+ gem "railties", "~> 7.1.0"
8
+
9
+ gemspec path: "../"
@@ -11,12 +11,12 @@ module Rambulance
11
11
 
12
12
  BAD_REQUEST_ERRORS = [
13
13
  ActionController::BadRequest,
14
- begin
15
- ActionDispatch::Http::Parameters::ParseError # Rails >= 5.2.0
16
- rescue NameError; end,
17
- begin
18
- ActionDispatch::ParamsParser::ParseError # Rails < 5.2.0
19
- rescue NameError; end,
14
+ # Rails >= 7.1.0
15
+ defined?(ActionDispatch::Http::MimeNegotiation::InvalidType) ? ActionDispatch::Http::MimeNegotiation::InvalidType : nil,
16
+ # Rails >= 5.2.0
17
+ defined?(ActionDispatch::Http::Parameters::ParseError) ? ActionDispatch::Http::Parameters::ParseError : nil,
18
+ # Rails < 5.2.0
19
+ defined?(ActionDispatch::ParamsParser::ParseError) ? ActionDispatch::ParamsParser::ParseError : nil
20
20
  ].compact.freeze
21
21
 
22
22
  class ExceptionsApp < ActionController::Base
@@ -89,6 +89,10 @@ module Rambulance
89
89
  request.env["MALFORMED_HTTP_ACCEPT"], request.env["HTTP_ACCEPT"] = request.env["HTTP_ACCEPT"], "*/*"
90
90
  end
91
91
 
92
+ if defined?(Rack::RACK_REQUEST_FORM_ERROR) && request.env.include?(Rack::RACK_REQUEST_FORM_ERROR)
93
+ request.env.delete(Rack::RACK_REQUEST_FORM_ERROR)
94
+ end
95
+
92
96
  # The #formats method needs to be called after the sanitization above.
93
97
  request.formats << Mime::Type.lookup('text/plain')
94
98
 
@@ -28,7 +28,12 @@ module Rambulance #:nodoc:
28
28
  org_show_exceptions = Rails.application.env_config['action_dispatch.show_exceptions']
29
29
 
30
30
  Rails.application.env_config['action_dispatch.show_detailed_exceptions'] = !enabled
31
- Rails.application.env_config['action_dispatch.show_exceptions'] = enabled
31
+
32
+ if ActionDispatch::ExceptionWrapper.instance_methods.include?(:show?)
33
+ Rails.application.env_config['action_dispatch.show_exceptions'] = enabled ? :all : :none
34
+ else
35
+ Rails.application.env_config['action_dispatch.show_exceptions'] = enabled
36
+ end
32
37
 
33
38
  yield
34
39
  ensure
@@ -37,4 +42,3 @@ module Rambulance #:nodoc:
37
42
  end
38
43
  end
39
44
  end
40
-
@@ -1,3 +1,3 @@
1
1
  module Rambulance
2
- VERSION = "2.3.0"
2
+ VERSION = "3.1.0"
3
3
  end
@@ -7,4 +7,3 @@ class ExeptionsAppTest < ActionDispatch::IntegrationTest
7
7
  assert_equal 404, response.status
8
8
  end
9
9
  end
10
-
@@ -4,6 +4,7 @@ require 'jbuilder'
4
4
  class TestApp < Rails::Application
5
5
  config.secret_token = '964ab2f0fbbb68bc36f3cc487ca296bb8555fac50627924024c245a1599e5265'
6
6
  config.session_store :cookie_store, :key => '_myapp_session'
7
+ config.active_support.cache_format_version = 7.1 if Rails::VERSION::STRING >= "7.1"
7
8
  config.active_support.deprecation = :log
8
9
  config.eager_load = false
9
10
  config.root = File.dirname(__FILE__)
@@ -2,28 +2,28 @@ require 'test_helper'
2
2
 
3
3
  class ErrorJsonTest < ActionDispatch::IntegrationTest
4
4
  test 'returns the 422 json for ActionController:InvalidAuthenticityToken but without its template' do
5
- get '/users/new'
5
+ get_json '/users/new'
6
6
 
7
7
  assert_equal 422, response.status
8
8
  assert_equal "Something went wrong", json_response['message']
9
9
  end
10
10
 
11
11
  test 'returns the 500 json for RuntimeError' do
12
- get '/users/1.json'
12
+ get_json '/users/1.json'
13
13
 
14
14
  assert_equal 500, response.status
15
15
  assert_equal "Something went wrong", json_response['message']
16
16
  end
17
17
 
18
18
  test 'returns the 404 json for CustomException' do
19
- get '/users.json'
19
+ get_json '/users.json'
20
20
 
21
21
  assert_equal 404, response.status
22
22
  assert_equal "Page not found", json_response['message']
23
23
  end
24
24
 
25
25
  test 'returns the 404 json for ActinoController::RoutingError' do
26
- get '/doesnt_exist.json'
26
+ get_json '/doesnt_exist.json'
27
27
 
28
28
  assert_equal 404, response.status
29
29
  assert_equal "Page not found", json_response['message']
@@ -92,21 +92,27 @@ class ErrorJsonTest < ActionDispatch::IntegrationTest
92
92
  private
93
93
 
94
94
  def without_layouts
95
- `mv test/fake_app/app/views/layouts/application.html.erb .`
96
- `mv test/fake_app/app/views/layouts/error.html.erb .`
97
-
98
- yield
99
- ensure
100
- `mv application.html.erb test/fake_app/app/views/layouts/`
101
- `mv error.html.erb test/fake_app/app/views/layouts/`
95
+ if Rails::VERSION::STRING >= '7.1.0'
96
+ yield
97
+ else
98
+ begin
99
+ `mv test/fake_app/app/views/layouts/application.html.erb .`
100
+ `mv test/fake_app/app/views/layouts/error.html.erb .`
101
+
102
+ yield
103
+ ensure
104
+ `mv application.html.erb test/fake_app/app/views/layouts/`
105
+ `mv error.html.erb test/fake_app/app/views/layouts/`
106
+ end
107
+ end
102
108
  end
103
109
 
104
- def get(path, params: {}, headers: {})
110
+ def get_json(path, params: {}, headers: {})
105
111
  without_layouts do
106
112
  if Rails::VERSION::STRING >= '5.1.0'
107
- super path, params: params, headers: { "CONTENT_TYPE" => "application/json", "HTTP_ACCEPT" => "application/json" }.merge(headers)
113
+ get path, params: params, headers: { "CONTENT_TYPE" => "application/json", "HTTP_ACCEPT" => "application/json" }.merge(headers)
108
114
  else
109
- super path, params, { "CONTENT_TYPE" => "application/json", "HTTP_ACCEPT" => "application/json" }.merge(headers)
115
+ get path, params, { "CONTENT_TYPE" => "application/json", "HTTP_ACCEPT" => "application/json" }.merge(headers)
110
116
  end
111
117
  end
112
118
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rambulance
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuki Nishijima
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-01-05 00:00:00.000000000 Z
12
+ date: 2024-01-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -163,6 +163,7 @@ files:
163
163
  - gemfiles/rails_60.gemfile
164
164
  - gemfiles/rails_61.gemfile
165
165
  - gemfiles/rails_70.gemfile
166
+ - gemfiles/rails_71.gemfile
166
167
  - gemfiles/rails_edge.gemfile
167
168
  - lib/generators/rambulance/exceptions_app_generator.rb
168
169
  - lib/generators/rambulance/install_generator.rb
@@ -222,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
223
  - !ruby/object:Gem::Version
223
224
  version: '0'
224
225
  requirements: []
225
- rubygems_version: 3.3.7
226
+ rubygems_version: 3.4.22
226
227
  signing_key:
227
228
  specification_version: 4
228
229
  summary: Simple and safe way to dynamically generate error pages