class Flatrack::Response
Handles flatrack responses
Constants
- DEFAULT_FILE
@private
Attributes
layout[RW]
request[R]
Public Class Methods
new(request)
click to toggle source
Initializes a response @param request [Flatrack::Request]
# File lib/flatrack/response.rb, line 13 def initialize(request) @request = request end
Public Instance Methods
render(file: file_for(request.page), status: 200, layout: :layout)
click to toggle source
Renders a response @param opts [Hash] @option opts [String] :file @option opts [Fixnum] :status @option opts [Symbol] :layout @return [Array] the rack response
# File lib/flatrack/response.rb, line 23 def render(file: file_for(request.page), status: 200, layout: :layout) @file, @status, @layout = file, status, layout page_content = pre_render_page body << begin renderer_for_layout(@layout).render view, &proc { page_content } rescue Flatrack::FileNotFound page_content end [status, headers, body] end
use_layout(layout)
click to toggle source
Set the layout @param layout [String] @return [String]
# File lib/flatrack/response.rb, line 37 def use_layout(layout) @layout = layout.to_s end
Private Instance Methods
body()
click to toggle source
# File lib/flatrack/response.rb, line 51 def body @body ||= [] end
file_for(path)
click to toggle source
# File lib/flatrack/response.rb, line 59 def file_for(path) if File.directory?(File.join config.site_root, 'pages', path) path = File.join(path, DEFAULT_FILE) end path end
headers()
click to toggle source
# File lib/flatrack/response.rb, line 55 def headers @headers ||= {} end
pre_render_page()
click to toggle source
# File lib/flatrack/response.rb, line 43 def pre_render_page renderer = renderer_for_page(@file) content = renderer.render(view) @view = nil headers['Content-Type'] = FORMATS[renderer.format.to_s] content end
renderer_for_layout(file)
click to toggle source
# File lib/flatrack/response.rb, line 70 def renderer_for_layout(file) Template.find config.site_root, :layout, format, file end
renderer_for_page(file)
click to toggle source
# File lib/flatrack/response.rb, line 66 def renderer_for_page(file) Template.find config.site_root, :page, format, file end
view()
click to toggle source
# File lib/flatrack/response.rb, line 74 def view @view ||= View.new(self) end