rails_exception_handler 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY CHANGED
@@ -1,15 +1,19 @@
1
1
  CHANGELOG
2
2
 
3
3
 
4
- v1.1.1 - 18. Jul 2011
4
+ v1.1.2 - July 19th 2011
5
+ - It should now be able to store user_info on routing errors too
6
+ - The RailsExceptionHandler class have been turned into a rails engine so that the load path manipulation could be removed
7
+
8
+ v1.1.1 - July 18th 2011
5
9
  - Fixed issue related to the handling of routing errors
6
10
 
7
- v1.1.0 - 18. Jul 2011
11
+ v1.1.0 - July 18th 2011
8
12
  - Better handling of ajax requests
9
13
  - Exceptions can be mapped to specific responses
10
14
 
11
- v1.0.1 - 17. Jul 2011
15
+ v1.0.1 - July 17th 2011
12
16
  - Minor fix for 1.8.7 compatibility
13
17
 
14
- v1.0.0 - 17. Jul 2011
18
+ v1.0.0 - July 17th 2011
15
19
  - Initial release
data/README.markdown CHANGED
@@ -82,7 +82,7 @@ config.store_user_info = {:method => :current_user, :field => :login}
82
82
  ```
83
83
 
84
84
  Default value: false (no info will be stored)
85
- If you turn this on and the error is generated by a client that is not logged in, then "Anonymous" will be used. Currently, "Anonymous" is always used on routing errors, regardless of whether the user is logged in or not. This because the error happens before a controller instance has been initialized, and I haven't found a safe way to do this manually yet.
85
+ If you turn this on and the error is generated by a client that is not logged in, then "Anonymous" will be used.
86
86
 
87
87
  ### responses and response_mapping
88
88
 
@@ -92,13 +92,15 @@ Create a set of responses and then map specific exceptions to these responses. T
92
92
  config.responses = {
93
93
  :default => "<h1>500</h1><p>Internal server error</p>",
94
94
  :not_found => "<h1>404</h1><p>Page not found</p>",
95
- :wrong_token => "<h1>500</h1>There was a problem authenticating the submitted form. Reload the page and try again."
95
+ :wrong_token => "<h1>500</h1><p>There was a problem authenticating the submitted form. Reload the page and try again.</p>",
96
+ :teapot => "<h1>418</h1><p>I'm a teapot</p>"
96
97
  }
97
98
  config.response_mapping = {
98
99
  'ActiveRecord::RecordNotFound' => :not_found,
99
100
  'ActionController:RoutingError' => :not_found,
100
101
  'AbstractController::ActionNotFound' => :not_found,
101
- 'ActionController::InvalidAuthenticityToken' => :wrong_token
102
+ 'ActionController::InvalidAuthenticityToken' => :wrong_token,
103
+ 'Teapot::CoffeeGroundsNotSupported' => :teapot
102
104
  }
103
105
  ```
104
106
 
data/Rakefile CHANGED
@@ -26,6 +26,8 @@ Jeweler::Tasks.new do |gem|
26
26
  gem.email = "contact@sharagoz.com"
27
27
  gem.authors = ["Sharagoz"]
28
28
  gem.extra_rdoc_files = ['README.markdown']
29
+ gem.require_paths = ["lib"]
30
+
29
31
  # dependencies defined in Gemfile
30
32
  end
31
33
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.1
1
+ 1.1.2
@@ -2,4 +2,8 @@ class ErrorResponseController < ApplicationController
2
2
  def index
3
3
  render(:text => @_env['exception_handler.response'], :layout => @_env['exception_handler.layout'])
4
4
  end
5
+
6
+ def dummy_action
7
+ render :nothing => true
8
+ end
5
9
  end
@@ -1,4 +1,5 @@
1
1
  class RailsExceptionHandler
2
+
2
3
  def initialize(app)
3
4
  @app = app
4
5
  end
@@ -21,17 +22,11 @@ class RailsExceptionHandler
21
22
 
22
23
  Rails.configuration.action_dispatch.show_exceptions = true
23
24
  require File.expand_path(File.dirname(__FILE__)) + '/patch/show_exceptions.rb'
24
-
25
- %w{ models controllers }.each do |dir|
26
- path = File.join(File.dirname(__FILE__), '../app', dir)
27
- $LOAD_PATH << path
28
- ActiveSupport::Dependencies.autoload_paths << path
29
- ActiveSupport::Dependencies.autoload_once_paths.delete(path)
30
- end
31
25
  end
32
26
  end
33
27
 
34
28
  require 'rails_exception_handler/configuration.rb'
35
29
  require 'rails_exception_handler/handler.rb'
36
30
  require 'rails_exception_handler/parser.rb'
31
+ require 'rails_exception_handler/engine.rb'
37
32
  require 'net/http'
@@ -0,0 +1,4 @@
1
+ class RailsExceptionHandler
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -4,7 +4,18 @@ class RailsExceptionHandler::Handler
4
4
  @env = env
5
5
  @request = ActionDispatch::Request.new(@env)
6
6
  @parsed_error = nil
7
- @controller = @env['action_controller.instance'] || ApplicationController.new
7
+ if(@env['action_controller.instance'])
8
+ @controller = @env['action_controller.instance']
9
+ else
10
+ # A routing error has occurred and no controller instance exists. Here I am firing off a
11
+ # request to a dummy action that goes through the whole action dispatch stack, which will
12
+ # hopefully make sure that any authentication mechanism are properly initialized so that
13
+ # we may get the current_user object later.
14
+ @controller = ErrorResponseController.new
15
+ @controller.request = @request
16
+ @controller.response = ActionDispatch::Response.new
17
+ @controller.process(:dummy_action)
18
+ end
8
19
  end
9
20
 
10
21
  def handle_exception
@@ -75,3 +86,4 @@ class RailsExceptionHandler::Handler
75
86
  return config.responses[key]
76
87
  end
77
88
  end
89
+
@@ -49,11 +49,7 @@ class RailsExceptionHandler::Parser
49
49
  def user_info
50
50
  config = RailsExceptionHandler.configuration.store_user_info
51
51
  return nil unless(config)
52
- begin
53
- user_object = @controller.send(config[:method])
54
- rescue
55
- user_object = nil
56
- end
52
+ user_object = @controller.send(config[:method])
57
53
  user_object ? user_object.send(config[:field]) : 'Anonymous'
58
54
  end
59
55
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rails_exception_handler}
8
- s.version = "1.1.1"
8
+ s.version = "1.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sharagoz"]
12
- s.date = %q{2011-07-18}
12
+ s.date = %q{2011-07-19}
13
13
  s.description = %q{}
14
14
  s.email = %q{contact@sharagoz.com}
15
15
  s.extra_rdoc_files = [
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  "lib/patch/show_exceptions.rb",
30
30
  "lib/rails_exception_handler.rb",
31
31
  "lib/rails_exception_handler/configuration.rb",
32
+ "lib/rails_exception_handler/engine.rb",
32
33
  "lib/rails_exception_handler/handler.rb",
33
34
  "lib/rails_exception_handler/parser.rb",
34
35
  "rails_exception_handler.gemspec",
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rails_exception_handler
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.1.1
5
+ version: 1.1.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Sharagoz
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-18 00:00:00 +02:00
13
+ date: 2011-07-19 00:00:00 +02:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -90,6 +90,7 @@ files:
90
90
  - lib/patch/show_exceptions.rb
91
91
  - lib/rails_exception_handler.rb
92
92
  - lib/rails_exception_handler/configuration.rb
93
+ - lib/rails_exception_handler/engine.rb
93
94
  - lib/rails_exception_handler/handler.rb
94
95
  - lib/rails_exception_handler/parser.rb
95
96
  - rails_exception_handler.gemspec