Merge pull request #1518 from mojombo/fix-serve-detatch
Print better messages for detached server. Mute output on detach.
This commit is contained in:
		
						commit
						3ddc33c4bf
					
				|  | @ -65,6 +65,7 @@ command :build do |c| | |||
|   c.option '-w', '--watch', 'Watch for changes and rebuild' | ||||
|   c.option '--lsi', 'Use LSI for improved related posts' | ||||
|   c.option '-D', '--drafts', 'Render posts in the _drafts folder' | ||||
|   c.option '-v', '--verbose', 'Print verbose output.' | ||||
| 
 | ||||
|   c.action do |args, options| | ||||
|     options = normalize_options(options.__hash__) | ||||
|  | @ -84,6 +85,7 @@ command :serve do |c| | |||
|   c.option '--lsi', 'Use LSI for improved related posts' | ||||
|   c.option '-B', '--detach', 'Run the server in the background (detach)' | ||||
|   c.option '-D', '--drafts', 'Render posts in the _drafts folder' | ||||
|   c.option '-v', '--verbose', 'Print verbose output.' | ||||
| 
 | ||||
|   c.option '-P', '--port [PORT]', 'Port to listen on' | ||||
|   c.option '-H', '--host [HOST]', 'Host to bind to' | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| # -*- encoding: utf-8 -*- | ||||
| module Jekyll | ||||
|   module Commands | ||||
|     class Serve < Command | ||||
|  | @ -10,32 +10,54 @@ module Jekyll | |||
| 
 | ||||
|         FileUtils.mkdir_p(destination) | ||||
| 
 | ||||
|         mime_types_file = File.expand_path('../mime.types', File.dirname(__FILE__)) | ||||
|         mime_types = WEBrick::HTTPUtils::load_mime_types(mime_types_file) | ||||
| 
 | ||||
|         # recreate NondisclosureName under utf-8 circumstance | ||||
|         fh_option = WEBrick::Config::FileHandler | ||||
|         fh_option[:NondisclosureName] = ['.ht*','~*'] | ||||
| 
 | ||||
|         s = HTTPServer.new( | ||||
|           :Port => options['port'], | ||||
|           :BindAddress => options['host'], | ||||
|           :MimeTypes => mime_types, | ||||
|           :DoNotReverseLookup => true | ||||
|         ) | ||||
|         s = HTTPServer.new(webrick_options(options)) | ||||
| 
 | ||||
|         s.mount(options['baseurl'], HTTPServlet::FileHandler, destination, fh_option) | ||||
| 
 | ||||
|         if options['detach'] # detach the server | ||||
|           pid = Process.fork {s.start} | ||||
|           pid = Process.fork { s.start } | ||||
|           Process.detach(pid) | ||||
|           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 | ||||
| 
 | ||||
|       def self.webrick_options(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 | ||||
| 
 | ||||
|       def self.start_callback(detached) | ||||
|         unless detached | ||||
|           Proc.new { Jekyll.logger.info "Server running...", "press ctrl-c to stop." } | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       def self.mime_types | ||||
|         mime_types_file = File.expand_path('../mime.types', File.dirname(__FILE__)) | ||||
|         WEBrick::HTTPUtils::load_mime_types(mime_types_file) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue