OSDN Git Service

add rspec-rails
[praisedb/praisedb.git] / vendor / plugins / rspec-rails / lib / spec / rails / extensions / action_controller / rescue.rb
1 module ActionController
2   module Rescue
3     def use_rails_error_handling!
4       Kernel.warn <<-WARNING
5 DEPRECATION NOTICE: controller.use_rails_error_handling! is
6 deprecated and will be removed from a future version of
7 rspec-rails.
8
9 Use rescue_action_in_public!, which is defined directly in
10 rails' testing framework, instead.
11 WARNING
12       if ::Rails::VERSION::STRING =~ /^2\.0/
13         @use_rails_error_handling = true
14       else
15         # anything but 0.0.0.0 - borrowed from rails own rescue_action_in_public!
16         request.remote_addr = '208.77.188.166'
17       end
18     end
19     
20     def use_rails_error_handling?
21       @use_rails_error_handling ||= false
22     end
23
24   protected
25   
26     if ::Rails::VERSION::STRING =~ /^2\.0/
27       def rescue_action_in_public?
28         request.respond_to?(:rescue_action_in_public?) and request.rescue_action_in_public?
29       end
30       
31       def rescue_action_with_handler_with_fast_errors(exception)
32         if (use_rails_error_handling? || rescue_action_in_public?) & !handler_for_rescue(exception)
33           rescue_action_in_public(exception)
34         else
35           rescue_action_with_handler_without_fast_errors(exception)
36         end
37       end
38       alias_method_chain :rescue_action_with_handler, :fast_errors
39     end
40
41   end
42 end