gaffe 1.1.0 → 1.2.0

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
  SHA1:
3
- metadata.gz: 8a76d88f73a65c01478f10e150f4ec9ef46a9089
4
- data.tar.gz: 512a17ddc07b06e40683a8685eacb56950b92205
3
+ metadata.gz: a299d255e8e71ef667c749630dfca9ea9aac630a
4
+ data.tar.gz: 762d2f648c24cfd0714331e22894f839c1d80ee9
5
5
  SHA512:
6
- metadata.gz: 7e87748a54801fea4b59b755a5c52564e1678184309012971042ff4749f3dd04520010365460a73afcadd8d86ce1807a2535074d1ccbe259d66626ae1c47ef86
7
- data.tar.gz: 7314dde747616aace314b458bfad68369996971dc08737e81ea3aa284a2b5b5a04a773fdac5f6027588649f911e3d6ddcb533b2c4223082f130137007c4dbfd6
6
+ metadata.gz: d6ae8586749c662a4e4427ff64d9e9254d3770dbd05467d31ce2125c075962448eb788def45c58d7c2ab6511713943914e4b41d8d3abd3a161ad6d3440225e31
7
+ data.tar.gz: 641f0bdb5cf608df3093cc3b8e20fba86a6affba4cb29841a432b3d0574602ae8a11b8230e28fef8f69dadc3b86edbcca09ece7b54558fea8a62e43fbf5bc7c7
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013-2015, Mirego
1
+ Copyright (c) 2013-2016, Mirego
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
data/README.md CHANGED
@@ -47,16 +47,17 @@ end
47
47
  Gaffe.enable!
48
48
  ```
49
49
 
50
- It’s also possible to use a custom controller based on the URL in which the error has occured. This is especially
51
- useful if you have an application that also serves API requests via JSON. You would probably want to serve API errors
52
- through JSON and regular errors through HTML pages.
50
+ It’s also possible to use a custom controller based on the URL in which the error has occured. Both absolute and
51
+ relative URL supported. This is especially useful if you have an application that also serves API requests via
52
+ JSON. You would probably want to serve API errors through JSON and regular errors through HTML pages.
53
53
 
54
54
  ```ruby
55
55
  # config/initializers/gaffe.rb
56
56
  Gaffe.configure do |config|
57
57
  config.errors_controller = {
58
58
  %r[^/api/] => 'Api::ErrorsController',
59
- %r[^/] => 'ErrorsController'
59
+ %r[^/] => 'ErrorsController',
60
+ %r[^www.example.com] => 'HostSpecificErrorsController'
60
61
  }
61
62
  end
62
63
 
@@ -179,7 +180,7 @@ To test responses sent by Gaffe, you must use *request tests*.
179
180
 
180
181
  ## License
181
182
 
182
- `Gaffe` is © 2013-2015 [Mirego](http://www.mirego.com) and may be freely distributed under the [New BSD license](http://opensource.org/licenses/BSD-3-Clause). See the [`LICENSE.md`](https://github.com/mirego/gaffe/blob/master/LICENSE.md) file.
183
+ `Gaffe` is © 2013-2016 [Mirego](http://www.mirego.com) and may be freely distributed under the [New BSD license](http://opensource.org/licenses/BSD-3-Clause). See the [`LICENSE.md`](https://github.com/mirego/gaffe/blob/master/LICENSE.md) file.
183
184
 
184
185
  The mushroom cloud logo is based on [this lovely icon](http://thenounproject.com/noun/mushroom-cloud/#icon-No18596) by [Gokce Ozan](http://thenounproject.com/occultsearcher), from The Noun Project. Used under a [Creative Commons BY 3.0](http://creativecommons.org/licenses/by/3.0/) license.
185
186
 
@@ -30,7 +30,12 @@ module Gaffe
30
30
  private
31
31
 
32
32
  def request_controller(controllers)
33
- controllers.find { |pattern, _| @env['REQUEST_URI'] =~ pattern }.try(:last)
33
+ matched_controllers = controllers.find do |pattern, _|
34
+ relative_url = @env['REQUEST_URI']
35
+ absolute_url = @env['HTTP_HOST'] + relative_url
36
+ [relative_url, absolute_url].any? { |url| (url =~ pattern).present? }
37
+ end
38
+ matched_controllers.try(:last)
34
39
  end
35
40
  end
36
41
  end
@@ -1,3 +1,3 @@
1
1
  module Gaffe
2
- VERSION = '1.1.0'.freeze
2
+ VERSION = '1.2.0'.freeze
3
3
  end
@@ -0,0 +1,3 @@
1
+ # We need a fake "ApplicationController" because Gaffe's default controller inherits from it
2
+ class ApplicationController < ActionController::Base
3
+ end
@@ -32,7 +32,8 @@ describe Gaffe::ErrorsControllerResolver do
32
32
  Gaffe.configure do |config|
33
33
  config.errors_controller = {
34
34
  %r{^/web/} => :web_controller,
35
- %r{^/api/} => :api_controller
35
+ %r{^/api/} => :api_controller,
36
+ %r{^www.com} => :host_specific_controller
36
37
  }
37
38
  end
38
39
  end
@@ -42,6 +43,11 @@ describe Gaffe::ErrorsControllerResolver do
42
43
  it { expect(controller).to eql :api_controller }
43
44
  end
44
45
 
46
+ context 'with error coming from matching HTTP_HOST' do
47
+ let(:env) { request.env.merge('HTTP_HOST' => 'www.com', 'REQUEST_URI' => '/') }
48
+ it { expect(controller).to eql :host_specific_controller }
49
+ end
50
+
45
51
  context 'with errors coming from non-matching URL' do
46
52
  let(:env) { request.env.merge 'REQUEST_URI' => '/what' }
47
53
  it { expect(controller).to eql Gaffe::ErrorsController }
@@ -3,6 +3,8 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
3
  require 'rspec'
4
4
  require 'action_controller/railtie'
5
5
  require 'gaffe'
6
+ require_relative './application_controller_helper'
7
+ require 'gaffe/errors_controller'
6
8
 
7
9
  RSpec.configure do |config|
8
10
  # Disable `should` syntax
@@ -25,10 +27,6 @@ RSpec.configure do |config|
25
27
  end
26
28
  end
27
29
 
28
- # We need a fake "ApplicationController" because Gaffe's default controller inherits from it
29
- class ApplicationController < ActionController::Base
30
- end
31
-
32
30
  def test_request
33
31
  if Rails::VERSION::MAJOR >= 5
34
32
  ActionDispatch::TestRequest.create
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaffe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rémi Prévost
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-02-25 00:00:00.000000000 Z
12
+ date: 2016-09-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -132,6 +132,7 @@ files:
132
132
  - lib/gaffe/errors_controller.rb
133
133
  - lib/gaffe/errors_controller_resolver.rb
134
134
  - lib/gaffe/version.rb
135
+ - spec/application_controller_helper.rb
135
136
  - spec/gaffe/errors_controller_resolver_spec.rb
136
137
  - spec/gaffe/errors_spec.rb
137
138
  - spec/gaffe/gaffe_spec.rb
@@ -161,6 +162,7 @@ signing_key:
161
162
  specification_version: 4
162
163
  summary: Gaffe handles Rails error pages in a clean, simple way.
163
164
  test_files:
165
+ - spec/application_controller_helper.rb
164
166
  - spec/gaffe/errors_controller_resolver_spec.rb
165
167
  - spec/gaffe/errors_spec.rb
166
168
  - spec/gaffe/gaffe_spec.rb