module Roda::RodaPlugins::PrecompileTemplates::ClassMethods
def precompile_templates(pattern, opts=OPTS)
to +precompile_templates+:
To compile inline templates, just pass a single hash containing an :inline
should pass the same options when precompiling the template.
are passing any of those options to render/view for the template, you
including +:cache_key+, +:template_class+, and +:template_opts+. If you
You can specify other render options when calling +precompile_templates+,
precompile_templates 'views/users/_*.erb', locals: [:user]
variables to precompile, which should be an array of symbols:
If the templates use local variables, you need to specify which local
any subdirectory.
That will precompile all erb template files in the views directory or
precompile_templates "views/**/*.erb"
like to precompile:
You can call +precompile_templates+ with the pattern of templates you would
there are still cases where makes sense to use it.
handle optimized template methods supported in newer versions of Roda, but
Precompile the templates using the given options. Note that this doesn't
def precompile_templates(pattern, opts=OPTS) if pattern.is_a?(Hash) opts = pattern.merge(opts) end if locals = opts[:locals] locals.sort! else locals = EMPTY_ARRAY end compile_opts = if pattern.is_a?(Hash) [opts] else Dir[pattern].map{|file| opts.merge(:path=>File.expand_path(file, nil))} end instance = allocate compile_opts.each do |compile_opt| template = instance.send(:retrieve_template, compile_opt) begin Render.tilt_template_compiled_method(template, locals, self) rescue NotImplementedError # When freezing template caches, you may want to precompile a template for a # template type that doesn't support template precompilation, just to populate # the cache. Tilt rescues NotImplementedError in this case, which we can ignore. nil end end nil end