merb-core 0.9.2 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +61 -11
- data/bin/merb +5 -1
- data/lib/merb-core.rb +202 -25
- data/lib/merb-core/autoload.rb +19 -17
- data/lib/merb-core/bootloader.rb +84 -71
- data/lib/merb-core/config.rb +19 -14
- data/lib/merb-core/controller/abstract_controller.rb +16 -17
- data/lib/merb-core/controller/exceptions.rb +115 -70
- data/lib/merb-core/controller/merb_controller.rb +62 -38
- data/lib/merb-core/controller/mime.rb +1 -1
- data/lib/merb-core/controller/mixins/authentication.rb +87 -0
- data/lib/merb-core/controller/mixins/controller.rb +16 -15
- data/lib/merb-core/controller/mixins/render.rb +113 -19
- data/lib/merb-core/controller/mixins/responder.rb +8 -2
- data/lib/merb-core/controller/template.rb +1 -1
- data/lib/merb-core/core_ext.rb +1 -0
- data/lib/merb-core/core_ext/class.rb +113 -6
- data/lib/merb-core/core_ext/hash.rb +43 -39
- data/lib/merb-core/core_ext/kernel.rb +75 -38
- data/lib/merb-core/core_ext/mash.rb +4 -4
- data/lib/merb-core/core_ext/object.rb +18 -7
- data/lib/merb-core/core_ext/set.rb +9 -4
- data/lib/merb-core/core_ext/string.rb +29 -9
- data/lib/merb-core/core_ext/time.rb +13 -0
- data/lib/merb-core/dispatch/cookies.rb +1 -2
- data/lib/merb-core/dispatch/dispatcher.rb +18 -10
- data/lib/merb-core/dispatch/exceptions.html.erb +1 -1
- data/lib/merb-core/dispatch/request.rb +3 -0
- data/lib/merb-core/dispatch/router.rb +10 -7
- data/lib/merb-core/dispatch/router/behavior.rb +36 -27
- data/lib/merb-core/dispatch/router/route.rb +7 -2
- data/lib/merb-core/dispatch/session/cookie.rb +4 -4
- data/lib/merb-core/dispatch/session/memcached.rb +17 -5
- data/lib/merb-core/logger.rb +2 -2
- data/lib/merb-core/plugins.rb +16 -4
- data/lib/merb-core/rack/adapter/ebb.rb +4 -1
- data/lib/merb-core/rack/adapter/evented_mongrel.rb +2 -0
- data/lib/merb-core/rack/adapter/fcgi.rb +1 -0
- data/lib/merb-core/rack/adapter/mongrel.rb +1 -0
- data/lib/merb-core/rack/adapter/runner.rb +1 -0
- data/lib/merb-core/rack/adapter/thin.rb +3 -1
- data/lib/merb-core/rack/adapter/webrick.rb +1 -0
- data/lib/merb-core/rack/application.rb +17 -1
- data/lib/merb-core/server.rb +78 -28
- data/lib/merb-core/test/helpers/multipart_request_helper.rb +3 -3
- data/lib/merb-core/test/helpers/request_helper.rb +81 -27
- data/lib/merb-core/test/helpers/view_helper.rb +1 -1
- data/lib/merb-core/test/matchers/controller_matchers.rb +55 -5
- data/lib/merb-core/test/matchers/route_matchers.rb +8 -17
- data/lib/merb-core/test/matchers/view_matchers.rb +53 -11
- data/lib/merb-core/test/run_specs.rb +22 -14
- data/lib/merb-core/test/tasks/spectasks.rb +54 -33
- data/lib/merb-core/vendor/facets/inflect.rb +91 -2
- data/lib/merb-core/version.rb +2 -2
- data/spec/private/config/config_spec.rb +54 -26
- data/spec/private/core_ext/class_spec.rb +22 -0
- data/spec/private/core_ext/hash_spec.rb +70 -54
- data/spec/private/core_ext/kernel_spec.rb +149 -14
- data/spec/private/core_ext/object_spec.rb +92 -10
- data/spec/private/core_ext/string_spec.rb +162 -4
- data/spec/private/core_ext/time_spec.rb +16 -0
- data/spec/private/dispatch/bootloader_spec.rb +24 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +1 -1
- data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +1 -1
- data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +1 -1
- data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +1 -1
- data/spec/private/dispatch/fixture/config/black_hole.rb +12 -0
- data/spec/private/dispatch/fixture/log/merb_test.log +138 -0
- data/spec/private/plugins/plugin_spec.rb +79 -8
- data/spec/private/rack/application_spec.rb +1 -1
- data/spec/public/abstract_controller/controllers/filters.rb +26 -0
- data/spec/public/abstract_controller/controllers/helpers.rb +2 -2
- data/spec/public/abstract_controller/controllers/partial.rb +2 -2
- data/spec/public/abstract_controller/controllers/render.rb +16 -4
- data/spec/public/abstract_controller/filter_spec.rb +8 -0
- data/spec/public/abstract_controller/render_spec.rb +12 -0
- data/spec/public/controller/authentication_spec.rb +103 -0
- data/spec/public/controller/base_spec.rb +4 -3
- data/spec/public/controller/controllers/authentication.rb +47 -0
- data/spec/public/controller/controllers/base.rb +1 -0
- data/spec/public/controller/controllers/display.rb +30 -0
- data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +1 -0
- data/spec/public/controller/display_spec.rb +17 -0
- data/spec/public/controller/spec_helper.rb +1 -0
- data/spec/public/controller/url_spec.rb +25 -7
- data/spec/public/core/merb_core_spec.rb +34 -0
- data/spec/public/directory_structure/directory/app/controllers/custom.rb +2 -2
- data/spec/public/directory_structure/directory/log/merb_test.log +48 -0
- data/spec/public/logger/logger_spec.rb +10 -4
- data/spec/public/reloading/directory/app/controllers/reload.rb +1 -1
- data/spec/public/reloading/directory/log/merb_test.log +13 -0
- data/spec/public/reloading/reload_spec.rb +23 -22
- data/spec/public/request/request_spec.rb +2 -0
- data/spec/public/router/nested_resources_spec.rb +7 -0
- data/spec/public/router/resources_spec.rb +46 -1
- data/spec/public/router/special_spec.rb +5 -1
- data/spec/public/test/controller_matchers_spec.rb +25 -1
- data/spec/public/test/controllers/spec_helper_controller.rb +8 -0
- data/spec/public/test/request_helper_spec.rb +52 -1
- data/spec/public/test/route_matchers_spec.rb +27 -25
- data/spec/public/test/view_helper_spec.rb +1 -1
- data/spec/public/test/view_matchers_spec.rb +148 -72
- metadata +23 -3
data/lib/merb-core/config.rb
CHANGED
@@ -21,7 +21,8 @@ module Merb
|
|
21
21
|
:session_id_key => "_session_id",
|
22
22
|
:log_delimiter => " ~ ",
|
23
23
|
:log_auto_flush => false,
|
24
|
-
:disabled_components => []
|
24
|
+
:disabled_components => [],
|
25
|
+
:deferred_actions => []
|
25
26
|
}
|
26
27
|
end
|
27
28
|
|
@@ -90,7 +91,7 @@ module Merb
|
|
90
91
|
# ==== Returns
|
91
92
|
# String:: The config as YAML.
|
92
93
|
def to_yaml
|
93
|
-
@configuration.to_yaml
|
94
|
+
@configuration.to_yaml
|
94
95
|
end
|
95
96
|
|
96
97
|
# Sets up the configuration by storing the given settings.
|
@@ -120,7 +121,7 @@ module Merb
|
|
120
121
|
opts.release = Merb::RELEASE
|
121
122
|
|
122
123
|
opts.banner = "Usage: merb [uGdcIpPhmailLerkKX] [argument]"
|
123
|
-
opts.define_head "Merb
|
124
|
+
opts.define_head "Merb. Pocket rocket web framework"
|
124
125
|
opts.separator '*'*80
|
125
126
|
opts.separator 'If no flags are given, Merb starts in the foreground on port 4000.'
|
126
127
|
opts.separator '*'*80
|
@@ -141,7 +142,7 @@ module Merb
|
|
141
142
|
options[:cluster] = nodes
|
142
143
|
end
|
143
144
|
|
144
|
-
opts.on("-I", "--init-file FILE", "
|
145
|
+
opts.on("-I", "--init-file FILE", "File to use for initialization on load, defaults to config/init.rb") do |init_file|
|
145
146
|
options[:init_file] = init_file
|
146
147
|
end
|
147
148
|
|
@@ -161,14 +162,18 @@ module Merb
|
|
161
162
|
options[:merb_root] = File.expand_path(root)
|
162
163
|
end
|
163
164
|
|
164
|
-
opts.on("-a", "--adapter mongrel", "The rack adapter to use to run merb[mongrel, emongrel, thin, fastcgi, webrick, runner, irb]") do |adapter|
|
165
|
+
opts.on("-a", "--adapter mongrel", "The rack adapter to use to run merb[mongrel, emongrel, thin, ebb, fastcgi, webrick, runner, irb]") do |adapter|
|
165
166
|
options[:adapter] = adapter
|
166
167
|
end
|
167
168
|
|
169
|
+
opts.on("-R", "--rackup FILE", "Load an alternate Rack config file (default is config/rack.rb)") do |rackup|
|
170
|
+
options[:rackup] = rackup
|
171
|
+
end
|
172
|
+
|
168
173
|
opts.on("-i", "--irb-console", "This flag will start merb in irb console mode. All your models and other classes will be available for you in an irb session.") do |console|
|
169
174
|
options[:adapter] = 'irb'
|
170
175
|
end
|
171
|
-
|
176
|
+
|
172
177
|
opts.on("-S", "--sandbox", "This flag will enable a sandboxed irb console. If your ORM supports transactions, all edits will be rolled back on exit.") do |sandbox|
|
173
178
|
options[:sandbox] = true
|
174
179
|
end
|
@@ -185,20 +190,20 @@ module Merb
|
|
185
190
|
options[:environment] = env
|
186
191
|
end
|
187
192
|
|
188
|
-
opts.on("-r", "--script-runner ['RUBY CODE'| FULL_SCRIPT_PATH]",
|
193
|
+
opts.on("-r", "--script-runner ['RUBY CODE'| FULL_SCRIPT_PATH]",
|
189
194
|
"Command-line option to run scripts and/or code in the merb app.") do |code_or_file|
|
190
195
|
options[:runner_code] = code_or_file
|
191
196
|
options[:adapter] = 'runner'
|
192
197
|
end
|
193
198
|
|
194
199
|
opts.on("-K", "--graceful PORT or all", "Gracefully kill one merb proceses by port number. Use merb -K all to gracefully kill all merbs.") do |ports|
|
195
|
-
|
196
|
-
|
200
|
+
options[:action] = :kill
|
201
|
+
options[:port] = ports
|
197
202
|
end
|
198
203
|
|
199
204
|
opts.on("-k", "--kill PORT or all", "Kill one merb proceses by port number. Use merb -k all to kill all merbs.") do |port|
|
200
|
-
|
201
|
-
|
205
|
+
options[:action] = :kill_9
|
206
|
+
options[:port] = port
|
202
207
|
end
|
203
208
|
|
204
209
|
opts.on("-X", "--mutex on/off", "This flag is for turning the mutex lock on and off.") do |mutex|
|
@@ -206,7 +211,7 @@ module Merb
|
|
206
211
|
options[:use_mutex] = false
|
207
212
|
else
|
208
213
|
options[:use_mutex] = true
|
209
|
-
end
|
214
|
+
end
|
210
215
|
end
|
211
216
|
|
212
217
|
opts.on("-D", "--debugger", "Run merb using rDebug.") do
|
@@ -222,7 +227,7 @@ module Merb
|
|
222
227
|
end
|
223
228
|
|
224
229
|
opts.on("-?", "-H", "--help", "Show this help message") do
|
225
|
-
puts opts
|
230
|
+
puts opts
|
226
231
|
exit
|
227
232
|
end
|
228
233
|
end
|
@@ -249,7 +254,7 @@ module Merb
|
|
249
254
|
def configure(&block)
|
250
255
|
ConfigBlock.new(self, &block) if block_given?
|
251
256
|
end
|
252
|
-
|
257
|
+
|
253
258
|
# Allows retrieval of single key config values via Merb.config.<key>
|
254
259
|
# Allows single key assignment via Merb.config.<key> = ...
|
255
260
|
#
|
@@ -14,6 +14,7 @@
|
|
14
14
|
# ==== Examples
|
15
15
|
# before :some_filter
|
16
16
|
# before :authenticate, :exclude => [:login, :signup]
|
17
|
+
# before :has_role, :with => ["Admin"], :exclude => [:index,:show]
|
17
18
|
# before Proc.new {|c| c.some_method }, :only => :foo
|
18
19
|
# before :authorize, :unless => logged_in?
|
19
20
|
#
|
@@ -89,7 +90,7 @@ class Merb::AbstractController
|
|
89
90
|
# structure for your app.
|
90
91
|
#
|
91
92
|
# ==== Parameters
|
92
|
-
#
|
93
|
+
# context<~to_s>:: The controller context (the action or template name).
|
93
94
|
# type<~to_s>:: The content type. Defaults to nil.
|
94
95
|
# controller<~to_s>::
|
95
96
|
# The name of the controller. Defaults to controller_name.
|
@@ -98,9 +99,9 @@ class Merb::AbstractController
|
|
98
99
|
# ==== Returns
|
99
100
|
# String::
|
100
101
|
# Indicating where to look for the template for the current controller,
|
101
|
-
#
|
102
|
+
# context, and content-type.
|
102
103
|
#
|
103
|
-
# ====
|
104
|
+
# ==== Notes
|
104
105
|
# The type is irrelevant for controller-types that don't support
|
105
106
|
# content-type negotiation, so we default to not include it in the
|
106
107
|
# superclass.
|
@@ -114,8 +115,8 @@ class Merb::AbstractController
|
|
114
115
|
# of controller/action.mime.type
|
115
116
|
#---
|
116
117
|
# @public
|
117
|
-
def _template_location(
|
118
|
-
"#{controller}/#{
|
118
|
+
def _template_location(context, type = nil, controller = controller_name)
|
119
|
+
controller ? "#{controller}/#{context}" : context
|
119
120
|
end
|
120
121
|
|
121
122
|
# ==== Returns
|
@@ -158,15 +159,6 @@ class Merb::AbstractController
|
|
158
159
|
HERE
|
159
160
|
super
|
160
161
|
end
|
161
|
-
|
162
|
-
# ==== Parameters
|
163
|
-
# layout<~to_s>:: The layout that should be used for this class
|
164
|
-
#
|
165
|
-
# ==== Returns
|
166
|
-
# ~to_s:: The layout that was passed in
|
167
|
-
def layout(layout)
|
168
|
-
self._layout = layout
|
169
|
-
end
|
170
162
|
end
|
171
163
|
|
172
164
|
attr_accessor :_benchmarks, :_thrown_content
|
@@ -218,6 +210,7 @@ class Merb::AbstractController
|
|
218
210
|
_call_filters(_after_filters)
|
219
211
|
@_benchmarks[:after_filters_time] = Time.now - start if _after_filters
|
220
212
|
finalize_session
|
213
|
+
@body
|
221
214
|
end
|
222
215
|
|
223
216
|
# This method exists to provide an overridable hook for ActionArgs
|
@@ -247,7 +240,13 @@ class Merb::AbstractController
|
|
247
240
|
(filter_set || []).each do |filter, rule|
|
248
241
|
if _call_filter_for_action?(rule, action_name) && _filter_condition_met?(rule)
|
249
242
|
case filter
|
250
|
-
when Symbol, String
|
243
|
+
when Symbol, String
|
244
|
+
if rule.key?(:with)
|
245
|
+
args = rule[:with]
|
246
|
+
send(filter, *args)
|
247
|
+
else
|
248
|
+
send(filter)
|
249
|
+
end
|
251
250
|
when Proc then self.instance_eval(&filter)
|
252
251
|
end
|
253
252
|
end
|
@@ -323,7 +322,7 @@ class Merb::AbstractController
|
|
323
322
|
# Filter options (see class documentation under <tt>Filter Options</tt>).
|
324
323
|
# &block:: Currently ignored.
|
325
324
|
#
|
326
|
-
# ====
|
325
|
+
# ==== Notes
|
327
326
|
# If the filter already exists, its options will be replaced with opts.
|
328
327
|
def self.after(filter = nil, opts = {}, &block)
|
329
328
|
add_filter(self._after_filters, filter, opts)
|
@@ -335,7 +334,7 @@ class Merb::AbstractController
|
|
335
334
|
# Filter options (see class documentation under <tt>Filter Options</tt>).
|
336
335
|
# &block:: A block to use as a filter if filter is nil.
|
337
336
|
#
|
338
|
-
# ====
|
337
|
+
# ==== Notes
|
339
338
|
# If the filter already exists, its options will be replaced with opts.
|
340
339
|
def self.before(filter = nil, opts = {}, &block)
|
341
340
|
add_filter(self._before_filters, filter || block, opts)
|
@@ -58,7 +58,7 @@ module Merb
|
|
58
58
|
# "team@cowboys.com",
|
59
59
|
# "Exception occured at #{Time.now}",
|
60
60
|
# params[:exception])
|
61
|
-
# render
|
61
|
+
# render 'Something is wrong, but the team are on it!'
|
62
62
|
# end
|
63
63
|
#
|
64
64
|
# Note: The special param[:exception] is available in all Exception actions
|
@@ -101,135 +101,180 @@ module Merb
|
|
101
101
|
# String:: The snake cased name of the error without the namespace.
|
102
102
|
def name; self.class.name; end
|
103
103
|
|
104
|
-
#
|
105
|
-
#
|
106
|
-
def self.
|
107
|
-
|
108
|
-
|
104
|
+
# === Returns
|
105
|
+
# Integer:: The status-code of the error.
|
106
|
+
def status; self.class.status; end
|
107
|
+
alias :to_i :status
|
108
|
+
|
109
|
+
class << self
|
110
|
+
|
111
|
+
# ==== Returns
|
112
|
+
# String:: The snake cased name of the class without the namespace.
|
113
|
+
def name
|
114
|
+
self.to_s.split('::').last.snake_case
|
115
|
+
end
|
109
116
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
+
# Get the actual status-code for an Exception class.
|
118
|
+
#
|
119
|
+
# As usual, this can come from a constant upwards in
|
120
|
+
# the inheritance chain.
|
121
|
+
#
|
122
|
+
# ==== Returns
|
123
|
+
# Fixnum:: The status code of this exception.
|
124
|
+
def status
|
125
|
+
const_get(:STATUS) rescue 0
|
126
|
+
end
|
127
|
+
alias :to_i :status
|
128
|
+
|
129
|
+
# Set the actual status-code for an Exception class.
|
130
|
+
#
|
131
|
+
# If possible, set the STATUS constant, and update
|
132
|
+
# any previously registered (inherited) status-code.
|
133
|
+
#
|
134
|
+
# ==== Parameters
|
135
|
+
# num<~to_i>:: The status code
|
136
|
+
def status=(num)
|
137
|
+
unless self.status?
|
138
|
+
register_status_code(self, num)
|
139
|
+
self.const_set(:STATUS, num.to_i)
|
140
|
+
end
|
141
|
+
end
|
117
142
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
143
|
+
# See if a status-code has been defined (on self explicitly).
|
144
|
+
#
|
145
|
+
# ==== Returns
|
146
|
+
# Boolean:: Whether the a status code has been set
|
147
|
+
def status?
|
148
|
+
self.const_defined?(:STATUS)
|
149
|
+
end
|
150
|
+
|
151
|
+
# Registers any subclasses with status codes for easy lookup by
|
152
|
+
# set_status in Merb::Controller.
|
153
|
+
#
|
154
|
+
# Inheritance ensures this method gets inherited by any subclasses, so
|
155
|
+
# it goes all the way down the chain of inheritance.
|
156
|
+
#
|
157
|
+
# ==== Parameters
|
158
|
+
#
|
159
|
+
# subclass<Merb::ControllerExceptions::Base>::
|
160
|
+
# The Exception class that is inheriting from Merb::ControllerExceptions::Base
|
161
|
+
def inherited(subclass)
|
162
|
+
# don't set the constant yet - any class methods will be called after self.inherited
|
163
|
+
# unless self.status = ... is set explicitly, the status code will be inherited
|
164
|
+
register_status_code(subclass, self.status) if self.status?
|
165
|
+
end
|
166
|
+
|
167
|
+
private
|
168
|
+
|
169
|
+
# Register the status-code for an Exception class.
|
170
|
+
#
|
171
|
+
# ==== Parameters
|
172
|
+
# num<~to_i>:: The status code
|
173
|
+
def register_status_code(klass, code)
|
174
|
+
STATUS_CODES[klass.name.to_sym] = code.to_i
|
131
175
|
end
|
176
|
+
|
132
177
|
end
|
133
178
|
end
|
134
179
|
|
135
180
|
class Informational < Merb::ControllerExceptions::Base; end
|
136
181
|
|
137
|
-
class Continue < Merb::ControllerExceptions::Informational;
|
182
|
+
class Continue < Merb::ControllerExceptions::Informational; self.status = 100; end
|
138
183
|
|
139
|
-
class SwitchingProtocols < Merb::ControllerExceptions::Informational;
|
184
|
+
class SwitchingProtocols < Merb::ControllerExceptions::Informational; self.status = 101; end
|
140
185
|
|
141
186
|
class Successful < Merb::ControllerExceptions::Base; end
|
142
187
|
|
143
|
-
class OK < Merb::ControllerExceptions::Successful;
|
188
|
+
class OK < Merb::ControllerExceptions::Successful; self.status = 200; end
|
144
189
|
|
145
|
-
class Created < Merb::ControllerExceptions::Successful;
|
190
|
+
class Created < Merb::ControllerExceptions::Successful; self.status = 201; end
|
146
191
|
|
147
|
-
class Accepted < Merb::ControllerExceptions::Successful;
|
192
|
+
class Accepted < Merb::ControllerExceptions::Successful; self.status = 202; end
|
148
193
|
|
149
|
-
class NonAuthoritativeInformation < Merb::ControllerExceptions::Successful;
|
194
|
+
class NonAuthoritativeInformation < Merb::ControllerExceptions::Successful; self.status = 203; end
|
150
195
|
|
151
|
-
class NoContent < Merb::ControllerExceptions::Successful;
|
196
|
+
class NoContent < Merb::ControllerExceptions::Successful; self.status = 204; end
|
152
197
|
|
153
|
-
class ResetContent < Merb::ControllerExceptions::Successful;
|
198
|
+
class ResetContent < Merb::ControllerExceptions::Successful; self.status = 205; end
|
154
199
|
|
155
|
-
class PartialContent < Merb::ControllerExceptions::Successful;
|
200
|
+
class PartialContent < Merb::ControllerExceptions::Successful; self.status = 206; end
|
156
201
|
|
157
202
|
class Redirection < Merb::ControllerExceptions::Base; end
|
158
203
|
|
159
|
-
class MultipleChoices < Merb::ControllerExceptions::Redirection;
|
204
|
+
class MultipleChoices < Merb::ControllerExceptions::Redirection; self.status = 300; end
|
160
205
|
|
161
|
-
class MovedPermanently < Merb::ControllerExceptions::Redirection;
|
206
|
+
class MovedPermanently < Merb::ControllerExceptions::Redirection; self.status = 301; end
|
162
207
|
|
163
|
-
class MovedTemporarily < Merb::ControllerExceptions::Redirection;
|
208
|
+
class MovedTemporarily < Merb::ControllerExceptions::Redirection; self.status = 302; end
|
164
209
|
|
165
|
-
class SeeOther < Merb::ControllerExceptions::Redirection;
|
210
|
+
class SeeOther < Merb::ControllerExceptions::Redirection; self.status = 303; end
|
166
211
|
|
167
|
-
class NotModified < Merb::ControllerExceptions::Redirection;
|
212
|
+
class NotModified < Merb::ControllerExceptions::Redirection; self.status = 304; end
|
168
213
|
|
169
|
-
class UseProxy < Merb::ControllerExceptions::Redirection;
|
214
|
+
class UseProxy < Merb::ControllerExceptions::Redirection; self.status = 305; end
|
170
215
|
|
171
|
-
class TemporaryRedirect < Merb::ControllerExceptions::Redirection;
|
216
|
+
class TemporaryRedirect < Merb::ControllerExceptions::Redirection; self.status = 307; end
|
172
217
|
|
173
218
|
class ClientError < Merb::ControllerExceptions::Base; end
|
174
219
|
|
175
|
-
class BadRequest < Merb::ControllerExceptions::ClientError;
|
220
|
+
class BadRequest < Merb::ControllerExceptions::ClientError; self.status = 400; end
|
176
221
|
|
177
|
-
|
222
|
+
class MultiPartParseError < Merb::ControllerExceptions::BadRequest; end
|
178
223
|
|
179
|
-
class Unauthorized < Merb::ControllerExceptions::ClientError;
|
224
|
+
class Unauthorized < Merb::ControllerExceptions::ClientError; self.status = 401; end
|
180
225
|
|
181
|
-
class PaymentRequired < Merb::ControllerExceptions::ClientError;
|
226
|
+
class PaymentRequired < Merb::ControllerExceptions::ClientError; self.status = 402; end
|
182
227
|
|
183
|
-
class Forbidden < Merb::ControllerExceptions::ClientError;
|
228
|
+
class Forbidden < Merb::ControllerExceptions::ClientError; self.status = 403; end
|
184
229
|
|
185
|
-
class NotFound < Merb::ControllerExceptions::ClientError;
|
230
|
+
class NotFound < Merb::ControllerExceptions::ClientError; self.status = 404; end
|
186
231
|
|
187
|
-
|
232
|
+
class ActionNotFound < Merb::ControllerExceptions::NotFound; end
|
188
233
|
|
189
|
-
|
234
|
+
class TemplateNotFound < Merb::ControllerExceptions::NotFound; end
|
190
235
|
|
191
|
-
|
236
|
+
class LayoutNotFound < Merb::ControllerExceptions::NotFound; end
|
192
237
|
|
193
|
-
class MethodNotAllowed < Merb::ControllerExceptions::ClientError;
|
238
|
+
class MethodNotAllowed < Merb::ControllerExceptions::ClientError; self.status = 405; end
|
194
239
|
|
195
|
-
class NotAcceptable < Merb::ControllerExceptions::ClientError;
|
240
|
+
class NotAcceptable < Merb::ControllerExceptions::ClientError; self.status = 406; end
|
196
241
|
|
197
|
-
class ProxyAuthenticationRequired < Merb::ControllerExceptions::ClientError;
|
242
|
+
class ProxyAuthenticationRequired < Merb::ControllerExceptions::ClientError; self.status = 407; end
|
198
243
|
|
199
|
-
class RequestTimeout < Merb::ControllerExceptions::ClientError;
|
244
|
+
class RequestTimeout < Merb::ControllerExceptions::ClientError; self.status = 408; end
|
200
245
|
|
201
|
-
class Conflict < Merb::ControllerExceptions::ClientError;
|
246
|
+
class Conflict < Merb::ControllerExceptions::ClientError; self.status = 409; end
|
202
247
|
|
203
|
-
class Gone < Merb::ControllerExceptions::ClientError;
|
248
|
+
class Gone < Merb::ControllerExceptions::ClientError; self.status = 410; end
|
204
249
|
|
205
|
-
class LengthRequired < Merb::ControllerExceptions::ClientError;
|
250
|
+
class LengthRequired < Merb::ControllerExceptions::ClientError; self.status = 411; end
|
206
251
|
|
207
|
-
class PreconditionFailed < Merb::ControllerExceptions::ClientError;
|
252
|
+
class PreconditionFailed < Merb::ControllerExceptions::ClientError; self.status = 412; end
|
208
253
|
|
209
|
-
class RequestEntityTooLarge < Merb::ControllerExceptions::ClientError;
|
254
|
+
class RequestEntityTooLarge < Merb::ControllerExceptions::ClientError; self.status = 413; end
|
210
255
|
|
211
|
-
class RequestURITooLarge < Merb::ControllerExceptions::ClientError;
|
256
|
+
class RequestURITooLarge < Merb::ControllerExceptions::ClientError; self.status = 414; end
|
212
257
|
|
213
|
-
class UnsupportedMediaType < Merb::ControllerExceptions::ClientError;
|
258
|
+
class UnsupportedMediaType < Merb::ControllerExceptions::ClientError; self.status = 415; end
|
214
259
|
|
215
|
-
class RequestRangeNotSatisfiable < Merb::ControllerExceptions::ClientError;
|
260
|
+
class RequestRangeNotSatisfiable < Merb::ControllerExceptions::ClientError; self.status = 416; end
|
216
261
|
|
217
|
-
class ExpectationFailed < Merb::ControllerExceptions::ClientError;
|
262
|
+
class ExpectationFailed < Merb::ControllerExceptions::ClientError; self.status = 417; end
|
218
263
|
|
219
264
|
class ServerError < Merb::ControllerExceptions::Base; end
|
220
265
|
|
221
|
-
class NotImplemented < Merb::ControllerExceptions::ServerError;
|
266
|
+
class NotImplemented < Merb::ControllerExceptions::ServerError; self.status = 501; end
|
222
267
|
|
223
|
-
class BadGateway < Merb::ControllerExceptions::ServerError;
|
268
|
+
class BadGateway < Merb::ControllerExceptions::ServerError; self.status = 502; end
|
224
269
|
|
225
|
-
class ServiceUnavailable < Merb::ControllerExceptions::ServerError;
|
270
|
+
class ServiceUnavailable < Merb::ControllerExceptions::ServerError; self.status = 503; end
|
226
271
|
|
227
|
-
class GatewayTimeout < Merb::ControllerExceptions::ServerError;
|
272
|
+
class GatewayTimeout < Merb::ControllerExceptions::ServerError; self.status = 504; end
|
228
273
|
|
229
|
-
class HTTPVersionNotSupported < Merb::ControllerExceptions::ServerError;
|
274
|
+
class HTTPVersionNotSupported < Merb::ControllerExceptions::ServerError; self.status = 505; end
|
230
275
|
|
231
276
|
class InternalServerError < Merb::ControllerExceptions::ServerError #:doc:
|
232
|
-
|
277
|
+
self.status = 500;
|
233
278
|
# DEFAULT_TEMPLATE = ::Merb::Dispatcher::DEFAULT_ERROR_TEMPLATE
|
234
279
|
def initialize(exception = nil)
|
235
280
|
@exception = exception
|