#!/usr/bin/env ruby daemon_mode = !ARGV.empty? && ARGV[0] == "--daemon" if Rails.env == 'test' # Avoid spec/script/mailin_spec.rb running script/runner as a test suite # http://stackoverflow.com/questions/1899009/why-are-tests-running-in-production-mode-and-causing-my-script-runners-to-fail Test::Unit.run = true end script_dir = File.dirname(__FILE__) alaveteli_dir = File.expand_path(File.join(script_dir, "..")) Dir.chdir(alaveteli_dir) do require File.join(alaveteli_dir, 'config', 'boot') if daemon_mode # Run in daemon mode. # If the environment variable LOGFILE is present, # redirect STDERR and STDOUT to that file. if ENV.has_key? "LOGFILE" STDERR.reopen(STDOUT.reopen(ENV["LOGFILE"], "a")) STDOUT.sync=true puts "Daemon starting at #{Time.new}" end # Load the runner in a subprocess pid = fork do require 'commands/runner' exit 0 end # If the environment variable PIDFILE is present, # write the pid of the daemon process to that file. if ENV.has_key? "PIDFILE" File.open(ENV["PIDFILE"], 'w') do |fh| fh.puts pid end end Process.detach(pid) else # Not daemon mode require 'commands/runner' end end