Skip to content

Commit

Permalink
Ensure that status codes are logged properly
Browse files Browse the repository at this point in the history
Needed to move AC::Metal::Instrumentation before AM::Metal::Rescue
so that status codes rendered from rescue_from blocks are logged
properly.
  • Loading branch information
jstorimer committed Jul 18, 2011
1 parent 48379df commit c24966f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
8 changes: 4 additions & 4 deletions actionpack/lib/action_controller/base.rb
Expand Up @@ -212,16 +212,16 @@ def self.without_modules(*modules)
# also include them at the bottom.
AbstractController::Callbacks,

# Append rescue at the bottom to wrap as much as possible.
Rescue,

# Add instrumentations hooks at the bottom, to ensure they instrument
# all the methods properly.
Instrumentation,

# Params wrapper should come before instrumentation so they are
# properly showed in logs
ParamsWrapper,

# The same with rescue, append it at the end to wrap as much as possible.
Rescue
ParamsWrapper
]

MODULES.each do |mod|
Expand Down
19 changes: 19 additions & 0 deletions actionpack/test/controller/log_subscriber_test.rb
Expand Up @@ -6,6 +6,13 @@ module Another
class LogSubscribersController < ActionController::Base
wrap_parameters :person, :include => :name, :format => :json

class SpecialException < Exception
end

rescue_from SpecialException do
head :status => 406
end

def show
render :nothing => true
end
Expand Down Expand Up @@ -39,6 +46,10 @@ def with_exception
raise Exception
end

def with_rescued_exception
raise SpecialException
end

end
end

Expand Down Expand Up @@ -195,6 +206,14 @@ def test_process_action_with_exception_includes_http_status_code
assert_match(/Completed 500/, logs.last)
end

def test_process_action_with_rescued_exception_includes_http_status_code
get :with_rescued_exception
wait

assert_equal 2, logs.size
assert_match(/Completed 406/, logs.last)
end

def logs
@logs ||= @logger.logged(:info)
end
Expand Down

0 comments on commit c24966f

Please sign in to comment.