Skip to content

Commit

Permalink
fix db_runtime attribute value after raising ActionView::MissingTempl…
Browse files Browse the repository at this point in the history
…ate exception
  • Loading branch information
Fivell committed Feb 27, 2013
1 parent dca0b57 commit dd0bbd2
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
14 changes: 14 additions & 0 deletions actionpack/test/activerecord/controller_runtime_test.rb
Expand Up @@ -8,6 +8,8 @@

class ControllerRuntimeLogSubscriberTest < ActionController::TestCase
class LogSubscriberController < ActionController::Base
respond_to :html

def show
render :inline => "<%= Project.all %>"
end
Expand All @@ -16,6 +18,12 @@ def zero
render :inline => "Zero DB runtime"
end

def create
ActiveRecord::LogSubscriber.runtime += 100
project = Project.last
respond_with(project, location: url_for(action: :show))
end

def redirect
Project.all
redirect_to :action => 'show'
Expand Down Expand Up @@ -64,6 +72,12 @@ def test_runtime_reset_before_requests
assert_match(/\(Views: [\d.]+ms \| ActiveRecord: 0.0ms\)/, @logger.logged(:info)[1])
end

def test_log_with_active_record_when_post
post :create
wait
assert_match(/ActiveRecord: ([1-9][\d.]+)ms\)/, @logger.logged(:info)[2])
end

def test_log_with_active_record_when_redirecting
get :redirect
wait
Expand Down
8 changes: 8 additions & 0 deletions activerecord/CHANGELOG.md
@@ -1,5 +1,13 @@
## Rails 4.0.0 (unreleased) ##

* Fix calculation of `db_runtime` property in
`ActiveRecord::Railties::ControllerRuntime#cleanup_view_runtime`.
Previously, after raising `ActionView::MissingTemplate` db_runtime was
not populated.
Fixes #9215.

*Igor Fedoronchuk*

* Schema dumper supports dumping the enabled database extensions to `schema.rb`
(currently only supported by postgresql).

Expand Down
Expand Up @@ -21,9 +21,10 @@ def process_action(action, *args)
def cleanup_view_runtime
if ActiveRecord::Base.connected?
db_rt_before_render = ActiveRecord::LogSubscriber.reset_runtime
self.db_runtime = (db_runtime || 0) + db_rt_before_render
runtime = super
db_rt_after_render = ActiveRecord::LogSubscriber.reset_runtime
self.db_runtime = db_rt_before_render + db_rt_after_render
self.db_runtime += db_rt_after_render
runtime - db_rt_after_render
else
super
Expand Down

0 comments on commit dd0bbd2

Please sign in to comment.