Class | Merb::BootLoader::Templates |
In: |
merb-core/lib/merb-core/bootloader.rb
|
Parent: | Merb::BootLoader |
Precompiles all non-partial templates.
Loads all non-partial templates into the Merb::InlineTemplates module.
Array[String]: | The list of template files which were loaded. |
:api: plugin
# File merb-core/lib/merb-core/bootloader.rb, line 1094 1094: def run 1095: template_paths.each do |path| 1096: Merb::Template.inline_template(File.open(path)) 1097: end 1098: end
Finds a list of templates to load.
Array[String]: | All found template files whose basename does not begin with "_". |
:api: private
# File merb-core/lib/merb-core/bootloader.rb, line 1106 1106: def template_paths 1107: extension_glob = "{#{Merb::Template.template_extensions.join(',')}}" 1108: 1109: # This gets all templates set in the controllers template roots 1110: # We separate the two maps because most of controllers will have 1111: # the same _template_root, so it's silly to be globbing the same 1112: # path over and over. 1113: controller_view_paths = [] 1114: Merb::AbstractController._abstract_subclasses.each do |klass| 1115: next if (const = Object.full_const_get(klass))._template_root.blank? 1116: controller_view_paths += const._template_roots.map { |pair| pair.first } 1117: end 1118: template_paths = controller_view_paths.uniq.compact.map { |path| Dir["#{path}/**/*.#{extension_glob}"] } 1119: 1120: # This gets the templates that might be created outside controllers 1121: # template roots. eg app/views/shared/* 1122: template_paths << Dir["#{Merb.dir_for(:view)}/**/*.#{extension_glob}"] if Merb.dir_for(:view) 1123: 1124: # This ignores templates for partials, which need to be compiled at use time to generate 1125: # a preamble that assigns local variables 1126: template_paths.flatten.compact.uniq.grep(%r{^.*/[^_][^/]*$}) 1127: end