aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2011-12-20 14:44:48 +0100
committerJosé Valim <jose.valim@gmail.com>2011-12-20 14:44:48 +0100
commitcae1768c6a0e3d1cd4a2c2d836ef213438689db6 (patch)
tree9facc64841105b01a48d35cee9ccf26aefedeb71
parent9f3f2b2e070529d84fa750cabec031b418c0d16f (diff)
downloadrails-cae1768c6a0e3d1cd4a2c2d836ef213438689db6.tar.gz
rails-cae1768c6a0e3d1cd4a2c2d836ef213438689db6.tar.bz2
rails-cae1768c6a0e3d1cd4a2c2d836ef213438689db6.zip
Remove deprecated layout lookup.
-rw-r--r--actionpack/lib/abstract_controller/layouts.rb72
-rw-r--r--actionpack/test/abstract/layouts_test.rb15
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