jefferies_tube 1.7.9 → 1.7.10
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 +4 -4
- data/CHANGELOG.md +7 -0
- data/app/controllers/jefferies_tube/errors_controller.rb +10 -32
- data/app/views/errors/404.json +4 -0
- data/jefferies_tube.gemspec +1 -0
- data/lib/jefferies_tube/layout_args.rb +26 -0
- data/lib/jefferies_tube/version.rb +1 -1
- data/lib/jefferies_tube.rb +2 -6
- data/spec/layout_args_spec.rb +43 -0
- metadata +20 -3
- data/app/views/errors/404.json.jbuilder +0 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 85da8f5337be37125ab8ce2ba7ff5fdf960eff58478efdca35bab6bce17f3e51
|
|
4
|
+
data.tar.gz: c191c067e03789bf1da42aa0d9c765b67bf74d98ff1355d026d8083e768b9b67
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 39227a9802d25099fecb25a2c26d2d34ebbaa9241686ac57df25ef96c607165e43e2facec4f1686fab631fe8196a9d12b971fe98e2c7519abdd1a580d10d5d9c
|
|
7
|
+
data.tar.gz: 276e73eba4df29de5cae4412aa044b00b7a581b0e7705de91de985752b21d8b7102e36a7406ff7e7d6f4d4be0e7c3a758bfee77a3db8dd724d0ec04f3908628e
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,13 @@ This project attempts to follow [semantic versioning](https://semver.org/)
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 1.7.10
|
|
10
|
+
* Bugfix: fix `ArgumentError` raised by `ErrorsController` on every rendered error page under Rails 8. `_layout`'s arity changed across Rails versions, so build its arguments from the method's actual parameters instead of hardcoding a count (supports Rails 6.1–8+).
|
|
11
|
+
* Declare a minimum `rails` dependency of `>= 6.1.7.9`.
|
|
12
|
+
* Remove dead code: the Rails 3 `before_filter` branch, the unused `html_layout` and `additional_information` methods, and a pre-Rails-6 `prompt_name` fallback.
|
|
13
|
+
* Remove 404 with referrer rollbar warning
|
|
14
|
+
* Fix JSON format 404
|
|
15
|
+
|
|
9
16
|
## 1.7.9
|
|
10
17
|
* Configure NewRelic to ignore invalid request errors caught by InvaildRequestHandler middleware
|
|
11
18
|
|
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
class JefferiesTube::ErrorsController < ApplicationController
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
skip_before_filter :verify_authenticity_token
|
|
5
|
-
else
|
|
6
|
-
before_action :disable_pundit
|
|
7
|
-
skip_before_action :verify_authenticity_token
|
|
8
|
-
end
|
|
2
|
+
before_action :disable_pundit
|
|
3
|
+
skip_before_action :verify_authenticity_token
|
|
9
4
|
|
|
10
5
|
def render_404
|
|
11
|
-
log_404
|
|
12
6
|
render_error_page 404
|
|
13
7
|
end
|
|
14
8
|
|
|
15
|
-
def additional_information
|
|
16
|
-
# TODO not implemented yet
|
|
17
|
-
render text: "Thanks!", layout: has_app_layout?
|
|
18
|
-
end
|
|
19
|
-
|
|
20
9
|
private
|
|
21
10
|
def render_error_page(code)
|
|
22
11
|
request.format = :html unless [:html, :json, :xml].include? request.format.to_sym
|
|
@@ -32,12 +21,6 @@ class JefferiesTube::ErrorsController < ApplicationController
|
|
|
32
21
|
end
|
|
33
22
|
end
|
|
34
23
|
|
|
35
|
-
def log_404
|
|
36
|
-
if defined?(Rollbar) && request.referrer.present?
|
|
37
|
-
Rollbar.warn("Got 404 with referrer", referrer: request.referrer, current_path: request.path)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
24
|
def disable_pundit
|
|
42
25
|
if defined?(Pundit)
|
|
43
26
|
skip_authorization
|
|
@@ -45,20 +28,15 @@ class JefferiesTube::ErrorsController < ApplicationController
|
|
|
45
28
|
end
|
|
46
29
|
|
|
47
30
|
def has_app_layout?
|
|
48
|
-
|
|
49
|
-
!!self.send(:_layout, [request.format.to_sym])
|
|
50
|
-
else
|
|
51
|
-
# boolean based on if there is a default layout for the current mime type
|
|
52
|
-
!!self.send(:_layout)
|
|
53
|
-
end
|
|
31
|
+
!!resolve_layout([request.format.to_sym])
|
|
54
32
|
end
|
|
55
33
|
|
|
56
|
-
def
|
|
57
|
-
|
|
58
|
-
self.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
34
|
+
def resolve_layout(formats)
|
|
35
|
+
args = JefferiesTube::LayoutArgs.for(
|
|
36
|
+
self.method(:_layout).parameters,
|
|
37
|
+
lookup_context: lookup_context,
|
|
38
|
+
formats: formats
|
|
39
|
+
)
|
|
40
|
+
self.send(:_layout, *args)
|
|
63
41
|
end
|
|
64
42
|
end
|
data/jefferies_tube.gemspec
CHANGED
|
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
|
|
|
26
26
|
spec.add_development_dependency "rake", '~> 13.0.6'
|
|
27
27
|
spec.add_development_dependency "rspec", '~> 3.0'
|
|
28
28
|
|
|
29
|
+
spec.add_dependency 'rails', '>= 6.1.7.9'
|
|
29
30
|
spec.add_dependency "bundler-audit", "~> 0.9"
|
|
30
31
|
spec.add_dependency "pry", '~> 0.13'
|
|
31
32
|
spec.add_dependency 'rubocop', '~> 1.26'
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module JefferiesTube
|
|
2
|
+
# Builds the positional argument list for ActionView's private `_layout`
|
|
3
|
+
# method, whose signature has changed across Rails versions:
|
|
4
|
+
#
|
|
5
|
+
# * 6.1–7.x: _layout(formats, keys)
|
|
6
|
+
# * 8.0+: _layout(lookup_context, formats, keys)
|
|
7
|
+
#
|
|
8
|
+
# Rather than hardcode a count (which breaks on every version we did not
|
|
9
|
+
# anticipate), map the method's actual parameter names to the values we
|
|
10
|
+
# have. Unknown parameter names fall back to `formats` so a future
|
|
11
|
+
# signature change still receives the formats it expects.
|
|
12
|
+
module LayoutArgs
|
|
13
|
+
KNOWN = %i[lookup_context formats keys].freeze
|
|
14
|
+
|
|
15
|
+
# @param parameters [Array] the result of `method(:_layout).parameters`
|
|
16
|
+
# @param lookup_context the controller's lookup_context
|
|
17
|
+
# @param formats [Array] e.g. [:html]
|
|
18
|
+
# @return [Array] positional args to splat into `_layout`
|
|
19
|
+
def self.for(parameters, lookup_context:, formats:)
|
|
20
|
+
available = { lookup_context: lookup_context, formats: formats, keys: [] }
|
|
21
|
+
parameters.map do |_type, name|
|
|
22
|
+
available.fetch(name, formats)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/jefferies_tube.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'jefferies_tube/version'
|
|
2
|
+
require 'jefferies_tube/layout_args'
|
|
2
3
|
require 'jefferies_tube/engine' if defined?(Rails)
|
|
3
4
|
|
|
4
5
|
module JefferiesTube
|
|
@@ -21,12 +22,7 @@ module JefferiesTube
|
|
|
21
22
|
def initialize
|
|
22
23
|
if defined?(Rails)
|
|
23
24
|
@environment = ::Rails.env.downcase || nil
|
|
24
|
-
@prompt_name =
|
|
25
|
-
if ::Rails::VERSION::MAJOR >= 6
|
|
26
|
-
::Rails.application.class.module_parent_name || nil
|
|
27
|
-
else
|
|
28
|
-
::Rails.application.class.parent_name || nil
|
|
29
|
-
end
|
|
25
|
+
@prompt_name = ::Rails.application.class.module_parent_name || nil
|
|
30
26
|
else
|
|
31
27
|
@environment = "development"
|
|
32
28
|
@prompt_name = "JefferiesTube"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require_relative '../lib/jefferies_tube/layout_args'
|
|
2
|
+
|
|
3
|
+
RSpec.describe JefferiesTube::LayoutArgs do
|
|
4
|
+
let(:lookup_context) { Object.new }
|
|
5
|
+
let(:formats) { [:html] }
|
|
6
|
+
|
|
7
|
+
def build(parameters)
|
|
8
|
+
described_class.for(parameters, lookup_context: lookup_context, formats: formats)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "Rails 8+ signature: _layout(lookup_context, formats, keys)" do
|
|
12
|
+
let(:parameters) { [[:req, :lookup_context], [:req, :formats], [:req, :keys]] }
|
|
13
|
+
|
|
14
|
+
it "returns three args in declared order" do
|
|
15
|
+
expect(build(parameters)).to eq([lookup_context, formats, []])
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
context "Rails 5.1–7 signature: _layout(formats, keys)" do
|
|
20
|
+
let(:parameters) { [[:req, :formats], [:req, :keys]] }
|
|
21
|
+
|
|
22
|
+
it "returns formats and keys, without lookup_context" do
|
|
23
|
+
expect(build(parameters)).to eq([formats, []])
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context "unknown parameter name" do
|
|
28
|
+
let(:parameters) { [[:req, :something_new]] }
|
|
29
|
+
|
|
30
|
+
it "falls back to formats so the call still receives a sensible value" do
|
|
31
|
+
expect(build(parameters)).to eq([formats])
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "matches the number of arguments to the method's arity" do
|
|
36
|
+
[
|
|
37
|
+
[[:req, :lookup_context], [:req, :formats], [:req, :keys]],
|
|
38
|
+
[[:req, :formats], [:req, :keys]]
|
|
39
|
+
].each do |params|
|
|
40
|
+
expect(build(params).size).to eq(params.size)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jefferies_tube
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.7.
|
|
4
|
+
version: 1.7.10
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brian Samson
|
|
@@ -79,6 +79,20 @@ dependencies:
|
|
|
79
79
|
- - "~>"
|
|
80
80
|
- !ruby/object:Gem::Version
|
|
81
81
|
version: '3.0'
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: rails
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: 6.1.7.9
|
|
89
|
+
type: :runtime
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: 6.1.7.9
|
|
82
96
|
- !ruby/object:Gem::Dependency
|
|
83
97
|
name: bundler-audit
|
|
84
98
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -171,7 +185,7 @@ files:
|
|
|
171
185
|
- app/helpers/jefferies_tube/application_helper.rb
|
|
172
186
|
- app/views/errors/404.html.erb
|
|
173
187
|
- app/views/errors/404.html.haml
|
|
174
|
-
- app/views/errors/404.json
|
|
188
|
+
- app/views/errors/404.json
|
|
175
189
|
- app/views/errors/404.xml
|
|
176
190
|
- app/views/errors/500.haml
|
|
177
191
|
- app/views/errors/500.html.erb
|
|
@@ -199,6 +213,7 @@ files:
|
|
|
199
213
|
- lib/jefferies_tube/database_backup_adapter.rb
|
|
200
214
|
- lib/jefferies_tube/engine.rb
|
|
201
215
|
- lib/jefferies_tube/invalid_request_handler.rb
|
|
216
|
+
- lib/jefferies_tube/layout_args.rb
|
|
202
217
|
- lib/jefferies_tube/postgresql_backup_adapter.rb
|
|
203
218
|
- lib/jefferies_tube/rack/maintenance.rb
|
|
204
219
|
- lib/jefferies_tube/railtie.rb
|
|
@@ -207,6 +222,7 @@ files:
|
|
|
207
222
|
- lib/tasks/db.rake
|
|
208
223
|
- spec/configuration_spec.rb
|
|
209
224
|
- spec/database_backup_spec.rb
|
|
225
|
+
- spec/layout_args_spec.rb
|
|
210
226
|
- spec/spec_helper.rb
|
|
211
227
|
homepage: https://github.com/tenforwardconsulting/jefferies_tube/
|
|
212
228
|
licenses:
|
|
@@ -226,10 +242,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
226
242
|
- !ruby/object:Gem::Version
|
|
227
243
|
version: '0'
|
|
228
244
|
requirements: []
|
|
229
|
-
rubygems_version: 4.0.
|
|
245
|
+
rubygems_version: 4.0.20
|
|
230
246
|
specification_version: 4
|
|
231
247
|
summary: Ten Forward Consulting useful tools.
|
|
232
248
|
test_files:
|
|
233
249
|
- spec/configuration_spec.rb
|
|
234
250
|
- spec/database_backup_spec.rb
|
|
251
|
+
- spec/layout_args_spec.rb
|
|
235
252
|
- spec/spec_helper.rb
|