aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-06-16 11:32:38 -0700
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-06-16 11:32:38 -0700
commit01a4bc84b8787df74d54147a0cf564df75e87970 (patch)
tree22ef90c6c2553afe20aeffb06295e80b44f84f28
parenta6e803bee124073f5d82d3264b3cdbcbf4d957d5 (diff)
downloadrails-01a4bc84b8787df74d54147a0cf564df75e87970.tar.gz
rails-01a4bc84b8787df74d54147a0cf564df75e87970.tar.bz2
rails-01a4bc84b8787df74d54147a0cf564df75e87970.zip
Exceptions now in an exceptions module
-rw-r--r--actionpack/lib/action_controller/base/exceptions.rb58
1 files changed, 58 insertions, 0 deletions
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