From 1413ee991ccfc76b24f29eb03c9cff82e588e5d7 Mon Sep 17 00:00:00 2001 From: Ricardo de Cillo Date: Fri, 13 Sep 2013 10:03:38 -0300 Subject: Custom flash should be defined only for the class that defines it and it's subclasses. --- actionpack/CHANGELOG.md | 7 +++++++ actionpack/lib/action_controller/metal/flash.rb | 2 +- actionpack/test/controller/flash_test.rb | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index ecbdfd51ed..01e816e87c 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,3 +1,10 @@ +* Fix custom flash type definition. Misusage of the `_flash_types` class variable + caused an error when reloading controllers with custom flash types. + + Fixes #12057 + + *Ricardo de Cillo* + * Do not break params filtering on `nil` values. Fixes #12149. diff --git a/actionpack/lib/action_controller/metal/flash.rb b/actionpack/lib/action_controller/metal/flash.rb index 1d77e331f8..65351284b9 100644 --- a/actionpack/lib/action_controller/metal/flash.rb +++ b/actionpack/lib/action_controller/metal/flash.rb @@ -37,7 +37,7 @@ module ActionController #:nodoc: end helper_method type - _flash_types << type + self._flash_types += [type] end end end diff --git a/actionpack/test/controller/flash_test.rb b/actionpack/test/controller/flash_test.rb index 3b874a739a..c64ffef654 100644 --- a/actionpack/test/controller/flash_test.rb +++ b/actionpack/test/controller/flash_test.rb @@ -214,6 +214,18 @@ class FlashTest < ActionController::TestCase get :redirect_with_foo_flash assert_equal "for great justice", @controller.send(:flash)[:foo] end + + class SubclassesTestController < TestController; end + + def test_add_flash_type_to_subclasses + TestController.add_flash_types :foo + assert SubclassesTestController._flash_types.include?(:foo) + end + + def test_do_not_add_flash_type_to_parent_class + SubclassesTestController.add_flash_types :bar + assert_not TestController._flash_types.include?(:bar) + end end class FlashIntegrationTest < ActionDispatch::IntegrationTest -- cgit v1.2.3