module Padrino::Rendering::ClassMethods
Class methods responsible for rendering templates as part of a request.
Public Instance Methods
# File lib/padrino/rendering.rb, line 139 def cache_layout_path(name) @_cached_layout ||= {} if !reload_templates? && path = @_cached_layout[name] path else @_cached_layout[name] = yield(name) end end
Caches the template file for the given rendering options. Deprecated since 0.12.1
@param [String] template_file
The path of the template file.
@param [Array<template_path, content_type, locale>] render_options
# File lib/padrino/rendering.rb, line 115 def cache_template_file!(template_file, render_options) logger.warn "##{__method__} is deprecated" (@_cached_templates ||= {})[render_options] = template_file || [] end
# File lib/padrino/rendering.rb, line 148 def cache_template_path(options) began_at = Time.now @_cached_templates ||= {} logging = defined?(settings) && settings.logging? && defined?(logger) if !reload_templates? && path = @_cached_templates[options] logger.debug :cached, began_at, path[0] if logging else path = @_cached_templates[options] = yield(name) logger.debug :template, began_at, path[0] if path && logging end path end
Returns the cached layout path.
@param [String, nil] given_layout
The requested layout.
@param [String, nil] layouts_path
The directory where the layouts are located. Defaults to #views.
# File lib/padrino/rendering.rb, line 128 def fetch_layout_path(given_layout, layouts_path=views) layout_name = (given_layout || @layout || :application).to_s cache_layout_path(layout_name) do if Pathname.new(layout_name).absolute? && Dir["#{layout_name}.*"].any? || Dir["#{layouts_path}/#{layout_name}.*"].any? layout_name else File.join('layouts', layout_name) end end end
Returns the cached template file to render for a given url, content_type and locale. Deprecated since 0.12.1
@param [Array<template_path, content_type, locale>] render_options
# File lib/padrino/rendering.rb, line 102 def fetch_template_file(render_options) logger.warn "##{__method__} is deprecated" (@_cached_templates ||= {})[render_options] end
Use layout like rails does or if a block given then like sinatra. If used without a block, sets the current layout for the route.
By default, searches in your:
app
/views
/layouts
/application
.(haml
|erb
|xxx
) app
/views
/layout_name
.(haml
|erb
|xxx
)
If you define layout
:custom
then searches for your layouts in app
/views
/layouts
/custom
.(haml
|erb
|xxx
) app
/views
/custom
.(haml
|erb
|xxx
)
@param [Symbol] name (:layout)
The layout to use.
@yield []
# File lib/padrino/rendering.rb, line 91 def layout(name=:layout, &block) return super(name, &block) if block_given? @layout = name end