aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorJamis Buck <jamis@37signals.com>2005-05-30 09:00:46 +0000
committerJamis Buck <jamis@37signals.com>2005-05-30 09:00:46 +0000
commitf8542a64b30bb6f67bcedf0c82de1291aab3c3d9 (patch)
tree375ae117198ca6f03526a0cbfcfc9f1729bf6027 /actionpack
parentf57ee365e154ce6d15cd168112d94a9a8ff27094 (diff)
downloadrails-f8542a64b30bb6f67bcedf0c82de1291aab3c3d9.tar.gz
rails-f8542a64b30bb6f67bcedf0c82de1291aab3c3d9.tar.bz2
rails-f8542a64b30bb6f67bcedf0c82de1291aab3c3d9.zip
Make sure the benchmarking render method always returns the result of the render, regardless of whether logging is enabled or not.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1371 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_controller/benchmarking.rb6
-rw-r--r--actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb4
-rw-r--r--actionpack/test/controller/new_render_test.rb34
-rw-r--r--actionpack/test/controller/render_test.rb6
5 files changed, 25 insertions, 27 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 9bac83a0e6..658d346056 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Make sure the benchmarking render method always returns the output of the render.
+
* render(:text), render(:partial), and render(:nothing) always default to :layout => false. This also fixes send_file, which was applying a layout if one existed for the current action.
* verify with :redirect_to won't redirect if a redirect or render has already been performed #1350
diff --git a/actionpack/lib/action_controller/benchmarking.rb b/actionpack/lib/action_controller/benchmarking.rb
index 6a78ad5dac..55aed1bca1 100644
--- a/actionpack/lib/action_controller/benchmarking.rb
+++ b/actionpack/lib/action_controller/benchmarking.rb
@@ -20,13 +20,17 @@ module ActionController #:nodoc:
render_without_benchmark(options, deprecated_status)
else
db_runtime = ActiveRecord::Base.connection.reset_runtime if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
- @rendering_runtime = Benchmark::measure{ render_without_benchmark(options, deprecated_status) }.real
+
+ render_output = nil
+ @rendering_runtime = Benchmark::measure{ render_output = render_without_benchmark(options, deprecated_status) }.real
if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
@db_rt_before_render = db_runtime
@db_rt_after_render = ActiveRecord::Base.connection.reset_runtime
@rendering_runtime -= @db_rt_after_render
end
+
+ render_output
end
end
diff --git a/actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb b/actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb
index 11b36e0dd4..5cb13c2456 100644
--- a/actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb
+++ b/actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb
@@ -18,7 +18,9 @@ class CGI #:nodoc:
end
private
- MULTIPART_FORM_BOUNDARY_RE = %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|n #"
+ unless defined?(MULTIPART_FORM_BOUNDARY_RE)
+ MULTIPART_FORM_BOUNDARY_RE = %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|n #"
+ end
def multipart_form_boundary
if env_table['REQUEST_METHOD'] == 'POST'
diff --git a/actionpack/test/controller/new_render_test.rb b/actionpack/test/controller/new_render_test.rb
index 3d1e6e794b..fb23b9e02c 100644
--- a/actionpack/test/controller/new_render_test.rb
+++ b/actionpack/test/controller/new_render_test.rb
@@ -9,10 +9,12 @@ module Fun
end
end
-
-class TestController < ActionController::Base
+class NewRenderTestController < ActionController::Base
layout :determine_layout
+ def self.controller_name; "test"; end
+ def self.controller_path; "test"; end
+
def hello_world
end
@@ -103,26 +105,17 @@ class TestController < ActionController::Base
end
end
-TestController.template_root = File.dirname(__FILE__) + "/../fixtures/"
+NewRenderTestController.template_root = File.dirname(__FILE__) + "/../fixtures/"
Fun::GamesController.template_root = File.dirname(__FILE__) + "/../fixtures/"
-class TestLayoutController < ActionController::Base
- layout "layouts/standard"
-
- def hello_world
- end
-
- def hello_world_outside_layout
- end
+class NewRenderTest < Test::Unit::TestCase
+ def setup
+ @controller = NewRenderTestController.new
- def rescue_action(e)
- raise unless ActionController::MissingTemplate === e
- end
-end
+ # enable a logger so that (e.g.) the benchmarking stuff runs, so we can get
+ # a more accurate simulation of what happens in "real life".
+ @controller.logger = Logger.new(nil)
-class RenderTest < Test::Unit::TestCase
- def setup
- @controller = TestController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@@ -244,9 +237,4 @@ class RenderTest < Test::Unit::TestCase
get :accessing_params_in_template, :name => "David"
assert_equal "Hello: David", @response.body
end
-
- private
- def process_request
- TestController.process(@request, @response)
- end
end
diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb
index d3051ef6ad..98d279055d 100644
--- a/actionpack/test/controller/render_test.rb
+++ b/actionpack/test/controller/render_test.rb
@@ -1,6 +1,8 @@
require File.dirname(__FILE__) + '/../abstract_unit'
-Customer = Struct.new("Customer", :name)
+unless defined?(Customer)
+ Customer = Struct.new("Customer", :name)
+end
module Fun
class GamesController < ActionController::Base
@@ -214,4 +216,4 @@ class RenderTest < Test::Unit::TestCase
def process_request
TestController.process(@request, @response)
end
-end \ No newline at end of file
+end