diff --git a/script/websocket-server.rb b/script/websocket-server.rb index e9ca98ecdfd7..a47ebb36e9d6 100755 --- a/script/websocket-server.rb +++ b/script/websocket-server.rb @@ -15,7 +15,7 @@ require 'optparse' require 'daemons' -def before_fork +def before_start # remember open file handles @files_to_reopen = [] ObjectSpace.each_object(File) do |file| @@ -23,7 +23,7 @@ def before_fork end end -def after_fork(dir) +def after_start(dir) Dir.chdir dir # Re-open file handles @@ -36,7 +36,7 @@ def after_fork(dir) $stderr.reopen("#{dir}/log/websocket-server_err.log", 'w').sync = true end -before_fork +before_start # Look for -o with argument, and -I and -D boolean arguments @options = { @@ -83,6 +83,9 @@ def after_fork(dir) @options[:tls_options] ||= {} @options[:tls_options][:cert_chain_file] = c end + opts.on('-l', '--to-logfile', 'enable logging to files') do |l| + @options[:logfile] = l + end end.parse! if ARGV[0] != 'start' && ARGV[0] != 'stop' @@ -103,17 +106,21 @@ def after_fork(dir) exit end -if ARGV[0] == 'start' && @options[:d] - puts "Starting websocket server on #{@options[:b]}:#{@options[:p]} (secure: #{@options[:s]}, pidfile: #{@options[:i]})" +if ARGV[0] == 'start' + if @options[:d] + puts "Starting websocket server on #{@options[:b]}:#{@options[:p]} (secure: #{@options[:s]}, pidfile: #{@options[:i]})" - # Use Daemons.rb's built-in facility for generating PID files - Daemons.daemonize( - app_name: File.basename(@options[:i], '.pid'), - dir_mode: :normal, - dir: File.dirname(@options[:i]) - ) + # Use Daemons.rb's built-in facility for generating PID files + Daemons.daemonize( + app_name: File.basename(@options[:i], '.pid'), + dir_mode: :normal, + dir: File.dirname(@options[:i]) + ) + end - after_fork(dir) + if @options[:d] || @options[:logfile] + after_start(dir) + end end WebsocketServer.run(@options)