Permalink
Browse files

Remove deprecated layout lookup.

  • Loading branch information...
1 parent 9f3f2b2 commit cae1768c6a0e3d1cd4a2c2d836ef213438689db6 @josevalim josevalim committed Dec 20, 2011
Showing with 27 additions and 60 deletions.
  1. +24 −48 actionpack/lib/abstract_controller/layouts.rb
  2. +3 −12 actionpack/test/abstract/layouts_test.rb
@@ -195,8 +195,9 @@ module Layouts
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 @@ def layout(layout, conditions = {})
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 @@ def _write_layout_method
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
@@ -57,11 +57,8 @@ class WithStringOverriddenChild < WithString
layout "hello_override"
end
- class WithNilChild < WithString
- layout nil
- end
-
class WithStringImpliedChild < WithString
+ layout nil
end
class WithChildOfImplied < WithStringImpliedChild
@@ -258,20 +255,14 @@ class TestBase < ActiveSupport::TestCase
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

0 comments on commit cae1768

Please sign in to comment.