Changeset 51
- Timestamp:
- 12/06/04 18:25:01 (4 years ago)
- Files:
-
- trunk/actionpack (modified) (2 props)
- trunk/actionpack/lib/action_controller.rb (modified) (2 diffs)
- trunk/actionpack/lib/action_controller/base.rb (modified) (5 diffs)
- trunk/actionpack/lib/action_controller/dependencies.rb (modified) (1 diff)
- trunk/actionpack/lib/action_controller/rescue.rb (modified) (2 diffs)
- trunk/actionpack/lib/action_controller/templates/rescues/_request_and_response.rhtml (modified) (1 diff)
- trunk/actionpack/lib/action_controller/templates/rescues/diagnostics.rhtml (modified) (2 diffs)
- trunk/actionpack/lib/action_controller/templates/rescues/template_error.rhtml (modified) (2 diffs)
- trunk/actionpack/README (modified) (1 diff)
- trunk/railties (modified) (1 prop)
- trunk/railties/dispatches/start_server (deleted)
- trunk/railties/lib/dispatcher.rb (modified) (2 diffs)
- trunk/railties/lib/generator.rb (modified) (1 diff)
- trunk/railties/lib/webrick_server.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionpack
- Property svn:ignore set to
pkg
doc - Property svn:ignores set to pkg
- Property svn:ignore set to
trunk/actionpack/lib/action_controller.rb
r28 r51 33 33 require 'action_controller/layout' 34 34 require 'action_controller/flash' 35 require 'action_controller/dependencies' 35 36 require 'action_controller/scaffolding' 36 37 require 'action_controller/helpers' 37 require 'action_controller/dependencies'38 38 require 'action_controller/cookies' 39 39 require 'action_controller/cgi_process' … … 45 45 include ActionController::Benchmarking 46 46 include ActionController::Rescue 47 include ActionController::Dependencies 47 48 include ActionController::Scaffolding 48 49 include ActionController::Helpers 49 include ActionController::Dependencies50 50 include ActionController::Cookies 51 51 end trunk/actionpack/lib/action_controller/base.rb
r33 r51 5 5 require 'action_controller/support/class_inheritable_attributes' 6 6 require 'action_controller/support/inflector' 7 8 unless Object.respond_to?(:require_dependency)9 Object.send(:define_method, :require_dependency) { |file_name| ActionController::Base.require_dependency(file_name) }10 end11 7 12 8 module ActionController #:nodoc: … … 198 194 cattr_accessor :consider_all_requests_local 199 195 200 # When turned on (which is default), all dependencies are included using "load". This mean that any change is instant in cached201 # environments like mod_ruby or FastCGI. When set to false, "require" is used, which is faster but requires server restart to202 # be effective.203 @@reload_dependencies = true204 cattr_accessor :reload_dependencies205 206 196 # Template root determines the base from which template references will be made. So a call to render("test/template") 207 197 # will be converted to "#{template_root}/test/template.rhtml". … … 249 239 new.process(request, response) 250 240 end 251 241 252 242 # Converts the class name from something like "OneModule::TwoModule::NeatController" to "NeatController". 253 243 def controller_class_name … … 259 249 Inflector.underscore(controller_class_name.sub(/Controller/, "")) 260 250 end 261 262 # Loads the <tt>file_name</tt> if reload_dependencies is true or requires if it's false.263 def require_dependency(file_name)264 reload_dependencies ? silence_warnings { load("#{file_name}.rb") } : require(file_name)265 end266 251 end 267 252 268 253 public 269 254 # Extracts the action_name from the request parameters and performs that action. 270 def process(request, response ) #:nodoc:255 def process(request, response, method = :perform_action, *arguments) #:nodoc: 271 256 initialize_template_class(response) 272 257 assign_shortcuts(request, response) … … 274 259 275 260 log_processing unless logger.nil? 276 perform_action261 send(method, *arguments) 277 262 close_session 278 263 trunk/actionpack/lib/action_controller/dependencies.rb
r32 r51 1 unless Object.respond_to?(:require_dependency) 2 Object.send(:define_method, :require_dependency) { |file_name| ActionController::Base.require_dependency(file_name) } 3 end 4 1 5 module ActionController #:nodoc: 2 6 module Dependencies #:nodoc: 3 7 def self.append_features(base) 4 8 super 9 10 base.class_eval do 11 # When turned on (which is default), all dependencies are included using "load". This mean that any change is instant in cached 12 # environments like mod_ruby or FastCGI. When set to false, "require" is used, which is faster but requires server restart to 13 # be effective. 14 @@reload_dependencies = true 15 cattr_accessor :reload_dependencies 16 end 17 5 18 base.extend(ClassMethods) 6 19 end 7 20 8 21 module ClassMethods 22 # Loads the <tt>file_name</tt> if reload_dependencies is true or requires if it's false. 23 def require_dependency(file_name) 24 reload_dependencies ? silence_warnings { load("#{file_name}.rb") } : require(file_name) 25 end 26 9 27 def model(*models) 10 28 require_dependencies(:model, models) trunk/actionpack/lib/action_controller/rescue.rb
r30 r51 9 9 def self.append_features(base) #:nodoc: 10 10 super 11 base.extend(ClassMethods) 11 12 base.class_eval do 12 13 alias_method :perform_action_without_rescue, :perform_action 13 14 alias_method :perform_action, :perform_action_with_rescue 15 end 16 end 17 18 module ClassMethods 19 def process_with_exception(request, response, exception) 20 new.process(request, response, :rescue_action, exception) 14 21 end 15 22 end … … 88 95 89 96 def clean_backtrace(exception) 90 base_dir = File.expand_path(File.dirname(__FILE__) + "/../../../../") 91 exception.backtrace.collect { |line| line.gsub(base_dir, "").gsub("/public/../config/environments/../../", "").gsub("/public/../", "") } 97 exception.backtrace.collect { |line| Object.const_defined?(:RAILS_ROOT) ? line.gsub(RAILS_ROOT, "") : line } 92 98 end 93 99 end trunk/actionpack/lib/action_controller/templates/rescues/_request_and_response.rhtml
r4 r51 1 1 <% 2 base_dir = File.expand_path(File.dirname(__FILE__))3 4 2 request_parameters_without_action = @request.parameters.clone 5 3 request_parameters_without_action.delete("action") trunk/actionpack/lib/action_controller/templates/rescues/diagnostics.rhtml
r4 r51 1 1 <% 2 base_dir = File.expand_path(File.dirname(__FILE__)) 3 4 clean_backtrace = @exception.backtrace.collect { |line| line.gsub(base_dir, "").gsub("/../config/environments/../../", "") } 5 app_trace = clean_backtrace.reject { |line| line[0..6] == "vendor/" || line.include?("dispatch.cgi") } 2 clean_backtrace = @exception.backtrace.collect { |line| Object.const_defined?(:RAILS_ROOT) ? line.gsub(RAILS_ROOT, "") : line } 3 app_trace = clean_backtrace.reject { |line| line =~ /(vendor|dispatch|ruby)/ } 6 4 framework_trace = clean_backtrace - app_trace 7 5 %> … … 11 9 <%=h @request.parameters["controller"].capitalize %>#<%=h @request.parameters["action"] %> 12 10 </h1> 13 <p><%=h @exception.message %></p>11 <p><%=h Object.const_defined?(:RAILS_ROOT) ? @exception.message.gsub(RAILS_ROOT, "") : @exception.message %></p> 14 12 15 <% unless app_trace.empty? %><pre><code><%=h app_trace. collect { |line| line.gsub("/../", "") }.join("\n") %></code></pre><% end %>13 <% unless app_trace.empty? %><pre><code><%=h app_trace.join("\n") %></code></pre><% end %> 16 14 17 15 <% unless framework_trace.empty? %> trunk/actionpack/lib/action_controller/templates/rescues/template_error.rhtml
r4 r51 1 <%2 base_dir = File.expand_path(File.dirname(__FILE__))3 4 framework_trace = @exception.original_exception.backtrace.collect do |line|5 line.gsub(base_dir, "").gsub("/../config/environments/../../", "")6 end7 %>8 9 1 <h1> 10 2 <%=h @exception.original_exception.class.to_s %> in … … 22 14 23 15 <a href="#" onclick="document.getElementById('framework_trace').style.display='block'">Show template trace</a> 24 <pre id="framework_trace" style="display:none"><code><%=h framework_trace.join("\n") %></code></pre>16 <pre id="framework_trace" style="display:none"><code><%=h @exception.original_exception.backtrace.collect { |line| Object.const_defined?(:RAILS_ROOT) ? line.gsub(RAILS_ROOT, "") : line }.join("\n") %></code></pre> 25 17 26 18 <%= render_file(@rescues_path + "/_request_and_response.rhtml", false) %> trunk/actionpack/README
r4 r51 326 326 def create 327 327 @post = Post.create(@params["post"]) 328 @post.save329 328 redirect_to :action => "display", :id => @post.id 330 329 end trunk/railties
- Property svn:ignore set to
pkg
- Property svn:ignore set to
trunk/railties/lib/dispatcher.rb
r32 r51 25 25 DEFAULT_SESSION_OPTIONS = { "database_manager" => CGI::Session::PStore, "prefix" => "ruby_sess.", "session_path" => "/" } 26 26 27 def self.dispatch(cgi = CGI.new, session_options = DEFAULT_SESSION_OPTIONS , error_page = nil)27 def self.dispatch(cgi = CGI.new, session_options = DEFAULT_SESSION_OPTIONS) 28 28 begin 29 29 request = ActionController::CgiRequest.new(cgi, session_options) … … 36 36 37 37 controller_class(controller_name).process(request, response).out 38 rescue Object => e 39 begin 40 ActionController::Base.logger.info "\n\nException throw during dispatch: #{e.message}\n#{e.backtrace.join("\n")}" 41 rescue Exception 42 # Couldn't log error 43 end 44 45 if error_page then cgi.out{ IO.readlines(error_page) } else raise e end 38 rescue Object => exception 39 ActionController::Base.process_with_exception(request, response, exception).out 46 40 ensure 47 41 ActiveRecord::Base.reset_associations_loaded trunk/railties/lib/generator.rb
r36 r51 74 74 end 75 75 76 # Generate model, unit test, and fixtures. 76 # Generate model, unit test, and fixtures. 77 77 class Model < Base 78 78 def generate trunk/railties/lib/webrick_server.rb
r4 r51 86 86 return true 87 87 rescue => err 88 p err89 88 return false 90 89 end