Ich baue Dämonen für meine Schienen Umgebungen die ganze Zeit. Das Dämonen-Juwel macht wirklich die ganze Arbeit daraus. Hier ist eine kleine Vorlage aus meiner neuesten Rails-App (script/yourdaemon) als Beispiel. Ich benutze das eventmachine Juwel, aber die Idee ist die gleiche:
#!/usr/bin/env ruby
require 'rubygems'
require 'daemons'
class YourDaemon
def initialize
end
def dostuff
logger.info "About to do stuff..."
EventMachine::run {
# Your code here
}
end
def logger
@@logger ||= ActiveSupport::BufferedLogger.new("#{RAILS_ROOT}/log/your_daemon.log")
end
end
dir = File.expand_path(File.join(File.dirname(__FILE__), '..'))
daemon_options = {
:multiple => false,
:dir_mode => :normal,
:dir => File.join(dir, 'tmp', 'pids'),
:backtrace => true
}
Daemons.run_proc('your_daemon', daemon_options) do
if ARGV.include?('--')
ARGV.slice! 0..ARGV.index('--')
else
ARGV.clear
end
Dir.chdir dir
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
YourDaemon.new.dostuff
end
Dies gibt Ihnen alle üblichen Skript/yourdaemon [run | start | stop | restart], und Sie können Argumente in den Dämon nach einem Pass " - ". In der Produktion solltest du god oder monit verwenden, um sicherzustellen, dass der Daemon neu gestartet wird, wenn er abstürzt. Habe Spaß!
Logan Thnaks für Ihre Antwort. Ich werde es mit deiner Vorlage versuchen. – jjmartres