bin/fake_sqs in fake_sqs-0.0.4 vs bin/fake_sqs in fake_sqs-0.0.5
- old
+ new
@@ -1,26 +1,34 @@
#!/usr/bin/env ruby
require 'fake_sqs'
require 'optparse'
-options = { :port => 4567, :host => "0.0.0.0", :verbose => false }
+options = { :port => 4568, :host => "0.0.0.0", :verbose => false, :daemonize => false }
parser = OptionParser.new do |o|
- o.on "-p", "--port PORT", Integer, "Port to use (default: 4567)" do |port|
+ o.on "-p", "--port PORT", Integer, "Port to use (default: #{options[:port]})" do |port|
options[:port] = port
end
o.on "-o", "--bind HOST", "Host to bind to (default: 0.0.0.0)" do |host|
options[:host] = host
end
- o.on "-s", "--server SERVER", ['thin', 'mongrel', 'webrick'], "Server to use: thin, mongrel or webrick" do |server|
+ o.on "-s", "--server SERVER", ['thin', 'mongrel', 'webrick'], "Server to use: thin, mongrel or webrick (by default Sinatra chooses the best available)" do |server|
options[:server] = server
end
+ o.on "-P", "--pid PIDFILE", "Where to write the pid" do |pid|
+ options[:pid] = pid
+ end
+
+ o.on "-d", "--[no-]daemonize", "Detaches the process" do |daemonize|
+ options[:daemonize] = daemonize
+ end
+
o.on "-v", "--[no]-verbose", "Shows input parameters and output XML" do |verbose|
options[:verbose] = verbose
end
o.on_tail "--version", "Shows the version" do
@@ -40,9 +48,27 @@
app = FakeSQS::WebInterface
if options[:verbose]
require 'fake_sqs/show_output'
app.use FakeSQS::ShowOutput
+end
+
+if options[:daemonize]
+ Process.daemon(true, true)
+end
+
+if (pid = options[:pid])
+ if File.exist?(pid)
+ existing_pid = File.open(pid, 'r').read.chomp.to_i
+ running = Process.getpgid(existing_pid) rescue false
+ if running
+ warn "Error, Process #{existing_pid} already running"
+ exit 1
+ else
+ warn "Cleaning up stale pid at #{pid}"
+ end
+ end
+ File.open(pid, 'w') { |f| f.write(Process.pid) }
end
app.set :port, options[:port]
app.set :bind, options[:host]
app.set :server, options[:server] if options[:server]