module Padrino::Rendering::ClassMethods

Class methods responsible for rendering templates as part of a request.

Public Instance Methods

cache_layout_path(name) { |name| ... } click to toggle source
# File lib/padrino/rendering.rb, line 121
def cache_layout_path(name)
  @_cached_layout ||= {}
  if !reload_templates? && path = @_cached_layout[name]
    path
  else
    @_cached_layout[name] = yield(name)
  end
end
cache_template_path(options) { |name| ... } click to toggle source
# File lib/padrino/rendering.rb, line 130
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
fetch_layout_path(given_layout, layouts_path=views) click to toggle source

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 110
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
layout(name=:layout, &block) click to toggle source

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 97
def layout(name=:layout, &block)
  return super(name, &block) if block_given?
  @layout = name
end