diff options
Diffstat (limited to 'actionpack/lib/action_controller')
-rwxr-xr-x | actionpack/lib/action_controller/base.rb | 16 | ||||
-rw-r--r-- | actionpack/lib/action_controller/dispatcher.rb | 1 | ||||
-rw-r--r-- | actionpack/lib/action_controller/layout.rb | 13 |
3 files changed, 18 insertions, 12 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb index 1321b002eb..5d4afc31fe 100755 --- a/actionpack/lib/action_controller/base.rb +++ b/actionpack/lib/action_controller/base.rb @@ -5,7 +5,6 @@ require 'action_controller/routing' require 'action_controller/resources' require 'action_controller/url_rewriter' require 'action_controller/status_codes' -require 'action_view/template_finder' require 'drb' require 'set' @@ -429,7 +428,6 @@ module ActionController #:nodoc: def view_paths=(value) @view_paths = value - ActionView::TemplateFinder.process_view_paths(value) end # Adds a view_path to the front of the view_paths array. @@ -442,7 +440,6 @@ module ActionController #:nodoc: def prepend_view_path(path) @view_paths = superclass.view_paths.dup if @view_paths.nil? view_paths.unshift(*path) - ActionView::TemplateFinder.process_view_paths(path) end # Adds a view_path to the end of the view_paths array. @@ -455,7 +452,6 @@ module ActionController #:nodoc: def append_view_path(path) @view_paths = superclass.view_paths.dup if @view_paths.nil? view_paths.push(*path) - ActionView::TemplateFinder.process_view_paths(path) end # Replace sensitive parameter data from the request log. @@ -646,11 +642,11 @@ module ActionController #:nodoc: # View load paths for controller. def view_paths - @template.finder.view_paths + @template.view_paths end def view_paths=(value) - @template.finder.view_paths = value # Mutex needed + @template.view_paths = value end # Adds a view_path to the front of the view_paths array. @@ -660,7 +656,7 @@ module ActionController #:nodoc: # self.prepend_view_path(["views/default", "views/custom"]) # def prepend_view_path(path) - @template.finder.prepend_view_path(path) # Mutex needed + @template.prepend_view_path(path) end # Adds a view_path to the end of the view_paths array. @@ -670,7 +666,7 @@ module ActionController #:nodoc: # self.append_view_path(["views/default", "views/custom"]) # def append_view_path(path) - @template.finder.append_view_path(path) # Mutex needed + @template.append_view_path(path) end protected @@ -1253,7 +1249,7 @@ module ActionController #:nodoc: end def template_exists?(template_name = default_template_name) - @template.finder.file_exists?(template_name) + @template.file_exists?(template_name) end def template_public?(template_name = default_template_name) @@ -1261,7 +1257,7 @@ module ActionController #:nodoc: end def template_exempt_from_layout?(template_name = default_template_name) - extension = @template && @template.finder.pick_template_extension(template_name) + extension = @template && @template.pick_template_extension(template_name) name_with_extension = !template_name.include?('.') && extension ? "#{template_name}.#{extension}" : template_name @@exempt_from_layout.any? { |ext| name_with_extension =~ ext } end diff --git a/actionpack/lib/action_controller/dispatcher.rb b/actionpack/lib/action_controller/dispatcher.rb index f892058f20..6a02f602e4 100644 --- a/actionpack/lib/action_controller/dispatcher.rb +++ b/actionpack/lib/action_controller/dispatcher.rb @@ -139,7 +139,6 @@ module ActionController if unprepared || force run_callbacks :prepare_dispatch - ActionView::TemplateFinder.reload! unless ActionView::Base.cache_template_loading self.unprepared = false end end diff --git a/actionpack/lib/action_controller/layout.rb b/actionpack/lib/action_controller/layout.rb index 0fbbfa8b05..a81efc2693 100644 --- a/actionpack/lib/action_controller/layout.rb +++ b/actionpack/lib/action_controller/layout.rb @@ -208,6 +208,12 @@ module ActionController #:nodoc: conditions.inject({}) {|hash, (key, value)| hash.merge(key => [value].flatten.map {|action| action.to_s})} end + def layout_directory_exists_cache + @@layout_directory_exists_cache ||= Hash.new do |h, dirname| + h[dirname] = File.directory? dirname + end + end + def default_layout_with_format(format, layout) list = layout_list if list.grep(%r{layouts/#{layout}\.#{format}(\.[a-z][0-9a-z]*)+$}).empty? @@ -307,8 +313,13 @@ module ActionController #:nodoc: end end + # Does a layout directory for this class exist? + # we cache this info in a class level hash def layout_directory?(layout_name) - @template.finder.find_template_extension_from_handler(File.join('layouts', layout_name)) + view_paths.find do |path| + next unless template_path = Dir[File.join(path, 'layouts', layout_name) + ".*"].first + self.class.send!(:layout_directory_exists_cache)[File.dirname(template_path)] + end end end end |