From 3b1ea3d896a6a1ebefdf3fcd461396ddbf8df230 Mon Sep 17 00:00:00 2001 From: Dmitry Vorotilin Date: Tue, 5 Jun 2012 11:03:00 +0400 Subject: ActionController::Metal doesn't have logger method, check it and then delegate --- actionpack/lib/action_view/helpers/controller_helper.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/actionpack/lib/action_view/helpers/controller_helper.rb b/actionpack/lib/action_view/helpers/controller_helper.rb index 1a583e62ae..74ef25f7c1 100644 --- a/actionpack/lib/action_view/helpers/controller_helper.rb +++ b/actionpack/lib/action_view/helpers/controller_helper.rb @@ -10,14 +10,16 @@ module ActionView delegate :request_forgery_protection_token, :params, :session, :cookies, :response, :headers, :flash, :action_name, :controller_name, :controller_path, :to => :controller - delegate :logger, :to => :controller, :allow_nil => true - def assign_controller(controller) if @_controller = controller @_request = controller.request if controller.respond_to?(:request) @_config = controller.config.inheritable_copy if controller.respond_to?(:config) end end + + def logger + controller.logger if controller.respond_to?(:logger) + end end end end -- cgit v1.2.3 From 4717c2ffc6c2416cfbf5fb560689606eadd3b3c6 Mon Sep 17 00:00:00 2001 From: Dmitry Vorotilin Date: Sat, 16 Jun 2012 00:52:22 +0400 Subject: Added test for case when view doesn't have logger method when using ActionController::Metal controller. --- actionpack/test/controller/render_test.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb index b4ef22ecf7..4ad9c64413 100644 --- a/actionpack/test/controller/render_test.rb +++ b/actionpack/test/controller/render_test.rb @@ -718,6 +718,14 @@ class TestController < ActionController::Base end end +class MetalTestController < ActionController::Metal + include ActionController::Rendering + + def accessing_logger_in_template + render :inline => "<%= logger.class %>" + end +end + class RenderTest < ActionController::TestCase tests TestController @@ -1583,3 +1591,12 @@ class LastModifiedRenderTest < ActionController::TestCase assert_response :success end end + +class MetalRenderTest < ActionController::TestCase + tests MetalTestController + + def test_access_to_logger_in_view + get :accessing_logger_in_template + assert_equal "NilClass", @response.body + end +end -- cgit v1.2.3