aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-05-12 10:53:00 -0700
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-05-12 10:53:00 -0700
commit72ca7c591c9eace150c0ebab1633d691a1ef12cf (patch)
tree5df30ffd42a00ef6ab38824bdee6e335e0b6d140
parent22c5667c2ef46d6723c1805d3adc52dc8e92429b (diff)
downloadrails-72ca7c591c9eace150c0ebab1633d691a1ef12cf.tar.gz
rails-72ca7c591c9eace150c0ebab1633d691a1ef12cf.tar.bz2
rails-72ca7c591c9eace150c0ebab1633d691a1ef12cf.zip
Fixed new callbacks to not call the action when a callback sets the response body
-rw-r--r--actionpack/lib/action_controller/abstract/callbacks.rb2
-rw-r--r--actionpack/test/abstract_controller/callbacks_test.rb19
2 files changed, 20 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/abstract/callbacks.rb b/actionpack/lib/action_controller/abstract/callbacks.rb
index 6e15b3e81b..3aff83a209 100644
--- a/actionpack/lib/action_controller/abstract/callbacks.rb
+++ b/actionpack/lib/action_controller/abstract/callbacks.rb
@@ -5,7 +5,7 @@ module AbstractController
depends_on ActiveSupport::NewCallbacks
included do
- define_callbacks :process_action
+ define_callbacks :process_action, "response_body"
end
def process_action
diff --git a/actionpack/test/abstract_controller/callbacks_test.rb b/actionpack/test/abstract_controller/callbacks_test.rb
index 410b1e57a6..1de60868c3 100644
--- a/actionpack/test/abstract_controller/callbacks_test.rb
+++ b/actionpack/test/abstract_controller/callbacks_test.rb
@@ -193,5 +193,24 @@ module AbstractController
end
end
+ class SetsResponseBody < ControllerWithCallbacks
+ before_filter :set_body
+
+ def index
+ self.response_body = "Fail"
+ end
+
+ def set_body
+ self.response_body = "Success"
+ end
+ end
+
+ class TestHalting < ActiveSupport::TestCase
+ test "when a callback sets the response body, the action should not be invoked" do
+ result = SetsResponseBody.process(:index)
+ assert_equal "Success", result.response_body
+ end
+ end
+
end
end \ No newline at end of file