Class: Jekyll::Commands::Serve
- Inherits:
-
Jekyll::Command
- Object
- Jekyll::Command
- Jekyll::Commands::Serve
- Defined in:
- lib/jekyll/commands/serve.rb
Class Method Summary collapse
- .mime_types ⇒ Object
- .process(options) ⇒ Object
- .start_callback(detached) ⇒ Object
- .webrick_options(config) ⇒ Object
Methods inherited from Jekyll::Command
Class Method Details
.mime_types ⇒ Object
59 60 61 62 |
# File 'lib/jekyll/commands/serve.rb', line 59 def self.mime_types mime_types_file = File.('../mime.types', File.dirname(__FILE__)) WEBrick::HTTPUtils::load_mime_types(mime_types_file) end |
.process(options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/jekyll/commands/serve.rb', line 5 def self.process() require 'webrick' include WEBrick destination = ['destination'] FileUtils.mkdir_p(destination) # recreate NondisclosureName under utf-8 circumstance fh_option = WEBrick::Config::FileHandler fh_option[:NondisclosureName] = ['.ht*','~*'] s = HTTPServer.new(()) s.mount(['baseurl'], HTTPServlet::FileHandler, destination, fh_option) Jekyll.logger.info "Server address:", "http://#{s.config[:BindAddress]}:#{s.config[:Port]}" if ['detach'] # detach the server pid = Process.fork { s.start } Process.detach(pid) Jekyll.logger.info "Server detatched with pid '#{pid}'.", "Run `kill -9 #{pid}' to stop the server." else # create a new server thread, then join it with current terminal t = Thread.new { s.start } trap("INT") { s.shutdown } t.join() end end |
.start_callback(detached) ⇒ Object
53 54 55 56 57 |
# File 'lib/jekyll/commands/serve.rb', line 53 def self.start_callback(detached) unless detached Proc.new { Jekyll.logger.info "Server running...", "press ctrl-c to stop." } end end |
.webrick_options(config) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/jekyll/commands/serve.rb', line 34 def self.(config) opts = { :Port => config['port'], :BindAddress => config['host'], :MimeTypes => self.mime_types, :DoNotReverseLookup => true, :StartCallback => start_callback(config['detach']) } if !config['verbose'] opts.merge!({ :AccessLog => [], :Logger => Log::new([], Log::WARN) }) end opts end |