class PhusionPassenger::HTMLTemplate

A convenience utility class for rendering our error pages.

Public Class Methods

new(template_name, options = {}) click to toggle source
# File lib/phusion_passenger/html_template.rb, line 31
def initialize(template_name, options = {})
        @buffer = ''
        @template = ERB.new(File.read("#{TEMPLATES_DIR}/#{template_name}.html.erb"),
                nil, nil, '@buffer')
        options.each_pair do |name, value|
                self[name] = value
        end
end

Public Instance Methods

[]=(name, value) click to toggle source
# File lib/phusion_passenger/html_template.rb, line 40
def []=(name, value)
        instance_variable_set("@#{name}".to_sym, value)
        return self
end
result() click to toggle source
# File lib/phusion_passenger/html_template.rb, line 45
def result
        return @template.result(binding)
end

Private Instance Methods

backtrace_html_for(error) click to toggle source
# File lib/phusion_passenger/html_template.rb, line 73
def backtrace_html_for(error)
        html = %Q{
                <table class="backtrace">
                <tr class="headers">
                        <th>#</th>
                        <th>File</th>
                        <th>Line</th>
                        <th>Location</th>
                </tr>
        }
        in_passenger = false
        error.backtrace.each_with_index do |item, i|
                filename, line, location = item.split(':', 3)
                in_passenger ||= starts_with(filename, "#{LIBDIR}/phusion_passenger")
                class_names = in_passenger ? "passenger" : "framework"
                class_names << ((i & 1 == 0) ? " uneven" : " even")
                html << %Q{
                        <tr class="backtrace_line #{class_names}">
                                <td class="index">#{i}</td>
                                <td class="filename">#{filename}</td>
                                <td class="line">#{line}</td>
                                <td class="location">#{location}</td>
                        </tr>
                }
        end
        html << "</table>\n"
        return html
end
get_binding() click to toggle source
# File lib/phusion_passenger/html_template.rb, line 52
def get_binding
        return binding
end
include(filename) click to toggle source
# File lib/phusion_passenger/html_template.rb, line 69
def include(filename)
        return File.read("#{TEMPLATES_DIR}/#{filename}")
end
layout(template_name, options = {}) { || ... } click to toggle source
# File lib/phusion_passenger/html_template.rb, line 56
def layout(template_name, options = {})
        options.each_pair do |name, value|
                self[name] = value
        end
        layout_template = ERB.new(File.read("#{TEMPLATES_DIR}/#{template_name}.html.erb"))
        b = get_binding do
                old_size = @buffer.size
                yield
                @buffer.slice!(old_size .. @buffer.size)
        end
        @buffer << layout_template.result(b)
end
starts_with(str, substr) click to toggle source
# File lib/phusion_passenger/html_template.rb, line 102
def starts_with(str, substr)
        return str[0 .. substr.size - 1] == substr
end