From 01a4bc84b8787df74d54147a0cf564df75e87970 Mon Sep 17 00:00:00 2001 From: Yehuda Katz + Carl Lerche Date: Tue, 16 Jun 2009 11:32:38 -0700 Subject: Exceptions now in an exceptions module --- .../lib/action_controller/base/exceptions.rb | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 actionpack/lib/action_controller/base/exceptions.rb diff --git a/actionpack/lib/action_controller/base/exceptions.rb b/actionpack/lib/action_controller/base/exceptions.rb new file mode 100644 index 0000000000..d0811254cb --- /dev/null +++ b/actionpack/lib/action_controller/base/exceptions.rb @@ -0,0 +1,58 @@ +module ActionController + class ActionControllerError < StandardError #:nodoc: + end + + class SessionRestoreError < ActionControllerError #:nodoc: + end + + class RenderError < ActionControllerError #:nodoc: + end + + class RoutingError < ActionControllerError #:nodoc: + attr_reader :failures + def initialize(message, failures=[]) + super(message) + @failures = failures + end + end + + class MethodNotAllowed < ActionControllerError #:nodoc: + attr_reader :allowed_methods + + def initialize(*allowed_methods) + super("Only #{allowed_methods.to_sentence(:locale => :en)} requests are allowed.") + @allowed_methods = allowed_methods + end + + def allowed_methods_header + allowed_methods.map { |method_symbol| method_symbol.to_s.upcase } * ', ' + end + + def handle_response!(response) + response.headers['Allow'] ||= allowed_methods_header + end + end + + class NotImplemented < MethodNotAllowed #:nodoc: + end + + class UnknownController < ActionControllerError #:nodoc: + end + + class MissingFile < ActionControllerError #:nodoc: + end + + class RenderError < ActionControllerError #:nodoc: + end + + class SessionOverflowError < ActionControllerError #:nodoc: + DEFAULT_MESSAGE = 'Your session data is larger than the data column in which it is to be stored. You must increase the size of your data column if you intend to store large data.' + + def initialize(message = nil) + super(message || DEFAULT_MESSAGE) + end + end + + class UnknownHttpMethod < ActionControllerError #:nodoc: + end +end \ No newline at end of file -- cgit v1.2.3