From cae1768c6a0e3d1cd4a2c2d836ef213438689db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 20 Dec 2011 14:44:48 +0100 Subject: Remove deprecated layout lookup. --- actionpack/lib/abstract_controller/layouts.rb | 72 +++++++++------------------ actionpack/test/abstract/layouts_test.rb | 15 ++---- 2 files changed, 27 insertions(+), 60 deletions(-) diff --git a/actionpack/lib/abstract_controller/layouts.rb b/actionpack/lib/abstract_controller/layouts.rb index 8b6136d6ba..6a6387632c 100644 --- a/actionpack/lib/abstract_controller/layouts.rb +++ b/actionpack/lib/abstract_controller/layouts.rb @@ -195,8 +195,9 @@ module AbstractController include Rendering included do - class_attribute :_layout_conditions - remove_possible_method :_layout_conditions + class_attribute :_layout, :_layout_conditions, + :instance_reader => false, :instance_writer => false + self._layout = nil self._layout_conditions = {} _write_layout_method end @@ -254,7 +255,7 @@ module AbstractController conditions.each {|k, v| conditions[k] = Array(v).map {|a| a.to_s} } self._layout_conditions = conditions - @_layout = layout || false # Converts nil to false + self._layout = layout _write_layout_method end @@ -281,52 +282,27 @@ module AbstractController RUBY end - if defined?(@_layout) - layout_definition = case @_layout - when String - @_layout.inspect - when Symbol - <<-RUBY - #{@_layout}.tap do |layout| - unless layout.is_a?(String) || !layout - raise ArgumentError, "Your layout method :#{@_layout} returned \#{layout}. It " \ - "should have returned a String, false, or nil" - end + layout_definition = case _layout + when String + _layout.inspect + when Symbol + <<-RUBY + #{_layout}.tap do |layout| + unless layout.is_a?(String) || !layout + raise ArgumentError, "Your layout method :#{_layout} returned \#{layout}. It " \ + "should have returned a String, false, or nil" end - RUBY - when Proc - define_method :_layout_from_proc, &@_layout - "_layout_from_proc(self)" - when false - nil - when true - raise ArgumentError, "Layouts must be specified as a String, Symbol, false, or nil" - when nil - name_clause - end - else - # Add a deprecation if the parent layout was explicitly set and the child - # still does a dynamic lookup. In next Rails release, we should @_layout - # to be inheritable so we can skip the child lookup if the parent explicitly - # set the layout. - parent = self.superclass.instance_variable_get(:@_layout) - @_layout = nil - inspect = parent.is_a?(Proc) ? parent.inspect : parent - - layout_definition = if parent.nil? - name_clause - elsif name - <<-RUBY - if template = lookup_context.find_all("#{_implied_layout_name}", #{prefixes.inspect}).first - ActiveSupport::Deprecation.warn 'Layout found at "#{_implied_layout_name}" for #{name} but parent controller ' \ - 'set layout to #{inspect.inspect}. Please explicitly set your layout to "#{_implied_layout_name}" ' \ - 'or set it to nil to force a dynamic lookup.' - template - else - super - end - RUBY - end + end + RUBY + when Proc + define_method :_layout_from_proc, &_layout + "_layout_from_proc(self)" + when false + nil + when true + raise ArgumentError, "Layouts must be specified as a String, Symbol, false, or nil" + when nil + name_clause end self.class_eval <<-RUBY, __FILE__, __LINE__ + 1 diff --git a/actionpack/test/abstract/layouts_test.rb b/actionpack/test/abstract/layouts_test.rb index de6f42d826..fc25718d9e 100644 --- a/actionpack/test/abstract/layouts_test.rb +++ b/actionpack/test/abstract/layouts_test.rb @@ -57,11 +57,8 @@ module AbstractControllerTests layout "hello_override" end - class WithNilChild < WithString - layout nil - end - class WithStringImpliedChild < WithString + layout nil end class WithChildOfImplied < WithStringImpliedChild @@ -258,20 +255,14 @@ module AbstractControllerTests test "when a child controller has an implied layout, use that layout and not the parent controller layout" do controller = WithStringImpliedChild.new - assert_deprecated { controller.process(:index) } - assert_equal "With Implied Hello string!", controller.response_body - end - - test "when a child controller specifies layout nil, do not use the parent layout" do - controller = WithNilChild.new controller.process(:index) - assert_equal "Hello string!", controller.response_body + assert_equal "With Implied Hello string!", controller.response_body end test "when a grandchild has no layout specified, the child has an implied layout, and the " \ "parent has specified a layout, use the child controller layout" do controller = WithChildOfImplied.new - assert_deprecated { controller.process(:index) } + controller.process(:index) assert_equal "With Implied Hello string!", controller.response_body end -- cgit v1.2.3