提交 92195e68 编写于 作者: R Rick Olson

Fix issue with deprecation messing up #template_root= usage. Add...

Fix issue with deprecation messing up #template_root= usage.  Add #prepend_view_path and #append_view_path to allow modification of a copy of the
superclass' view_paths.  [Rick]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6125 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 517bf081
*SVN* *SVN*
* Fix issue with deprecation messing up #template_root= usage. Add #prepend_view_path and #append_view_path to allow modification of a copy of the
superclass' view_paths. [Rick]
* Allow Controllers to have multiple view_paths instead of a single template_root. Closes #2754 [John Long] * Allow Controllers to have multiple view_paths instead of a single template_root. Closes #2754 [John Long]
* Add much-needed html-scanner tests. Fixed CDATA parsing bug. [Rick] * Add much-needed html-scanner tests. Fixed CDATA parsing bug. [Rick]
......
...@@ -356,9 +356,9 @@ def hide_action(*names) ...@@ -356,9 +356,9 @@ def hide_action(*names)
# Deprecated. Use view_paths instead. # Deprecated. Use view_paths instead.
def template_root=(path) def template_root=(path)
view_paths.unshift(path) prepend_view_path path
template_root
end end
deprecate :template_root= => :view_paths
# Deprecated. Use view_paths instead. # Deprecated. Use view_paths instead.
def template_root def template_root
...@@ -374,7 +374,7 @@ def template_root ...@@ -374,7 +374,7 @@ def template_root
def view_paths=(value) def view_paths=(value)
@@view_paths[name] = value @@view_paths[name] = value
end end
# View load paths for controller. # View load paths for controller.
def view_paths def view_paths
if paths = @@view_paths[name] if paths = @@view_paths[name]
...@@ -388,6 +388,22 @@ def view_paths ...@@ -388,6 +388,22 @@ def view_paths
end end
end end
# Adds a view_path to the front of the view_paths array.
# If the current class has no view paths, copy them from
# the superclass
def prepend_view_path(path)
self.view_paths = view_paths.dup if view_paths.frozen?
view_paths.unshift(path)
end
# Adds a view_path to the end of the view_paths array.
# If the current class has no view paths, copy them from
# the superclass
def append_view_path(path)
self.view_paths = view_paths.dup if view_paths.frozen?
view_paths << path
end
# Replace sensitive paramater data from the request log. # Replace sensitive paramater data from the request log.
# Filters paramaters that have any of the arguments as a substring. # Filters paramaters that have any of the arguments as a substring.
# Looks in all subhashes of the param hash for keys to filter. # Looks in all subhashes of the param hash for keys to filter.
......
...@@ -77,8 +77,8 @@ def process_with_components(request, response, parent_controller = nil) #:nodoc: ...@@ -77,8 +77,8 @@ def process_with_components(request, response, parent_controller = nil) #:nodoc:
def uses_component_template_root def uses_component_template_root
path_of_calling_controller = File.dirname(caller[1].split(/:\d+:/, 2).first) path_of_calling_controller = File.dirname(caller[1].split(/:\d+:/, 2).first)
path_of_controller_root = path_of_calling_controller.sub(/#{Regexp.escape(File.dirname(controller_path))}$/, "") path_of_controller_root = path_of_calling_controller.sub(/#{Regexp.escape(File.dirname(controller_path))}$/, "")
prepend_view_path path_of_controller_root
self.template_root = path_of_controller_root view_paths.first
end end
deprecate :uses_component_template_root => 'Components are deprecated and will be removed in Rails 2.0.' deprecate :uses_component_template_root => 'Components are deprecated and will be removed in Rails 2.0.'
......
...@@ -46,10 +46,11 @@ def test_view_paths_override ...@@ -46,10 +46,11 @@ def test_view_paths_override
def test_template_root_deprecated def test_template_root_deprecated
assert_deprecated(/template_root.*view_paths/) do assert_deprecated(/template_root.*view_paths/) do
TestController.template_root = LOAD_PATH_ROOT TestController.template_root = 'foo/bar'
end end
assert_deprecated(/template_root.*view_paths/) do assert_deprecated(/template_root.*view_paths/) do
assert_equal LOAD_PATH_ROOT, TestController.template_root assert_equal 'foo/bar', TestController.template_root
assert_equal ['foo/bar', LOAD_PATH_ROOT], TestController.view_paths
end end
end end
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
map.connect ':controller/:action/:id' map.connect ':controller/:action/:id'
end end
ActionController::Base.template_root = '.' ActionController::Base.view_load_paths = [ '.' ]
class ScaffoldPerson < ActionWebService::Struct class ScaffoldPerson < ActionWebService::Struct
member :id, :int member :id, :int
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册