module Middleman::Base
def registered(app)
def registered(app) # app.register ::Sinatra::Synchrony app.extend ClassMethods app.send :include, InstanceMethods # Basic Sinatra config app.set :app_file, __FILE__ app.set :root, Dir.pwd app.set :sessions, false app.set :logging, false app.set :environment, (ENV['MM_ENV'] && ENV['MM_ENV'].to_sym) || :development # Middleman-specific options app.set :index_file, "index.html" # What file responds to folder requests # Such as the homepage (/) or subfolders (/about/) # These directories are passed directly to Compass app.set :js_dir, "javascripts" # Where to look for javascript files app.set :css_dir, "stylesheets" # Where to look for CSS files app.set :images_dir, "images" # Where to look for images app.set :build_dir, "build" # Which folder are builds output to app.set :http_prefix, nil # During build, add a prefix for absolute paths # Pass all request to Middleman, even "static" files app.set :static, false app.set :views, "source" # Add Builder Callbacks app.register Middleman::CoreExtensions::Builder # Add Rack::Builder.map to Sinatra app.register Middleman::CoreExtensions::RackMap # Activate custom features app.register Middleman::CoreExtensions::Features # Activate Yaml Data package app.register Middleman::CoreExtensions::Data # Setup custom rendering app.register Middleman::CoreExtensions::Rendering # Compass framework app.register Middleman::CoreExtensions::Compass # Sprockets asset handling app.register Middleman::CoreExtensions::Sprockets # Setup asset path pipeline app.register Middleman::CoreExtensions::Assets # Activate built-in helpers app.register Middleman::CoreExtensions::DefaultHelpers # with_layout and page routing app.register Middleman::CoreExtensions::Routing # Parse YAML from templates app.register Middleman::CoreExtensions::FrontMatter app.set :default_features, [ :lorem ] # Default layout name app.set :layout, :layout # This will match all requests not overridden in the project's config.rb app.not_found do process_request end # Custom 404 handler (to be styled) app.error Sinatra::NotFound do content_type 'text/html' "<html><body><h1>File Not Found</h1><p>#{request.path_info}</p></body>" end # See if Tilt cannot handle this file app.before_processing(:base) do |result| request_path = request.path_info.gsub("%20", " ") should_be_ignored = !(request["is_proxy"]) && settings.excluded_paths.include?("/#{request_path}") if result && !should_be_ignored extensionless_path, template_engine = result # Return static files if !::Tilt.mappings.has_key?(template_engine.to_s) matched_mime = mime_type(File.extname(request_path)) matched_mime = "application/octet-stream" if matched_mime.nil? content_type matched_mime, :charset => 'utf-8' status 200 send_file File.join(settings.views, request_path) false else true end else if !%w(favicon.ico).include?(request_path) $stderr.puts "File not found: #{request_path}" end status 404 false end end end