gaffe 1.1.0 → 1.2.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
  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