2010-04-16 5 views
8

Ho bisogno di creare un demone ruby ​​che userà la libreria di eventmachine freeswitcher per il freeswitch.Costruisci un demone rubino che integra il mio ambiente di rotaie

Da alcuni giorni ho cercato sul web la soluzione migliore per costruire un demone rubino che integrasse il mio ambiente di rotaie, in particolare i miei modelli di registrazione attivi. Ho dato un'occhiata all'eccellente screencast di Ryan Bates (demodes 129 demoni personalizzati) ma non sono sicuro che sia ancora una soluzione reale.

Qualcuno conosce un buon modo per farlo?

Grazie a tutti per il vostro aiuto.

risposta

8

Costruisco demoni per i miei ambienti di rotaie tutto il tempo. La gemma dei demoni ci mette davvero tutto il lavoro fuori. Ecco un piccolo modello estratto dalla mia ultima app per rails (script/yourdaemon), ad esempio. Io uso la gemma eventmachine, ma l'idea è la stessa:

#!/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 

questo ti dà tutto il solito script/yourdaemon [run | Inizio | stop | restart], e si può passare gli argomenti al demone dopo una " -". Nella produzione dovrai usare dio o monit per assicurarti che il demone venga riavviato se muore. Divertiti!

+0

Logan per la tua risposta. Proverò con il tuo modello. – jjmartres

Problemi correlati