require 'rubygems'
require 'rbconfig'
require 'servolux'
require 'logger'
if ENV['main']
require 'main'
else
Top = self
def Main(&block)
Top.instance_eval(&block)
end
def mode(mode, &block)
if ARGV.first==mode
Top.instance_eval(&block)
Top.method(:run).call()
end
end
end
THIS_FILE = File.expand_path(__FILE__)
RUBY = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
PID_FILE = File.expand_path('dummy.pid')
LOG = Logger.new($stderr)
LOG.level = Logger::DEBUG
SERVER = Servolux::Server.new('dummy', :logger => LOG, :pid_file => PID_FILE) do
sleep 1 # pretend to work
end
Main do
mode 'backquotes' do
def run
puts "Starting daemon with backquotes"
`#{RUBY} #{THIS_FILE} daemon_start`
puts "Finished starting daemon"
end
end
mode 'system' do
def run
puts "Starting daemong with system()"
system("#{RUBY} #{THIS_FILE} daemon_start")
puts "Finished starting daemon"
end
end
mode 'popen' do
def run
puts "Starting daemon with popen()"
IO.popen("#{RUBY} #{THIS_FILE} daemon_start") do |io|
puts "Reading from STDOUT"
io.read
puts "Finished reading"
end
puts "Finished starting daemon"
end
end
mode 'open4' do
def run
require 'open4'
puts "Starting daemon with Open4"
Open4.popen4("#{RUBY} #{THIS_FILE} daemon_start") do |pid, stdin, stdout, stderr|
stdin.close
Process.waitpid(pid)
puts "Reading from STDOUT"
stdout.read
puts "Finished reading"
end
puts "Finished starting daemon"
end
end
mode 'server_start' do
def run
SERVER.startup
end
end
mode 'daemon_start' do
def run
daemon = Servolux::Daemon.new(:server => SERVER)
daemon.startup
end
end
mode 'daemon_stop' do
def run
daemon = Servolux::Daemon.new(:server => SERVER)
daemon.shutdown
end
end
end