Sha256: 9d5f8f9becbcd4b36d9a6f20be5ba217e3b081d059868379b8c85bb0e302475c
Contents?: true
Size: 1.57 KB
Versions: 15
Compression:
Stored size: 1.57 KB
Contents
require 'rack/request' require 'rack/response' require 'rack/file' require File.dirname(__FILE__) + '/../resolver' module Roger module Rack class Roger attr_reader :project def initialize(project) @project = project @docroot = project.html_path @resolver = Resolver.new(@docroot) @file_server = ::Rack::File.new(@docroot) end def call(env) url = env["PATH_INFO"] env["MOCKUP_PROJECT"] = project if template_path = @resolver.url_to_path(url) env["rack.errors"].puts "Rendering template #{template_path.inspect} (#{url.inspect})" # begin templ = ::Roger::Template.open(template_path, :partials_path => @project.partials_path, :layouts_path => @project.layouts_path) mime = ::Rack::Mime.mime_type(File.extname(template_path), 'text/html') resp = ::Rack::Response.new do |res| res.headers["Content-Type"] = mime if mime res.status = 200 res.write templ.render(env) end resp.finish # rescue StandardError => e # env["rack.errors"].puts "#{e.message}\n #{e.backtrace.join("\n")}\n\n" # resp = ::Rack::Response.new do |res| # res.status = 500 # res.write "An error occurred" # end # resp.finish # end else env["rack.errors"].puts "Invoking file handler for #{url.inspect}" @file_server.call(env) end end end end end
Version data entries
15 entries across 15 versions & 1 rubygems