diff --git a/lib/jekyll/commands/serve.rb b/lib/jekyll/commands/serve.rb index 912f4f62..111d6709 100644 --- a/lib/jekyll/commands/serve.rb +++ b/lib/jekyll/commands/serve.rb @@ -40,7 +40,7 @@ module Jekyll s.mount( options['baseurl'], - FileHandler, + custom_file_handler, destination, file_handler_options ) @@ -99,6 +99,21 @@ module Jekyll opts end + # Custom WEBrick FileHandler servlet for serving "/file.html" at "/file" + # when no exact match is found. This mirrors the behavior of GitHub + # Pages and many static web server configs. + def custom_file_handler + Class.new WEBrick::HTTPServlet::FileHandler do + def search_file(req, res, basename) + if file = super + file + else + super(req, res, "#{basename}.html") + end + end + end + end + def start_callback(detached) unless detached Proc.new { Jekyll.logger.info "Server running...", "press ctrl-c to stop." } @@ -131,19 +146,6 @@ module Jekyll end - # Custom WEBrick FileHandler servlet for serving "/file.html" at "/file" - # when no exact match is found. This mirrors the behavior of GitHub Pages - # and many static web server configs. - require 'webrick' - class FileHandler < ::WEBrick::HTTPServlet::FileHandler - def search_file(req, res, basename) - if file = super - file - else - super(req, res, "#{basename}.html") - end - end - end end end end