2010-03-14 10 views
8

Bene, il titolo dice tutto. Ho uno script ruby ​​che voglio eseguire come servizio (uno che posso avviare e interrompere) sulla mia macchina Linux. Sono stato in grado di trovare come farlo su Windows hereScritto rubino come servizio

Alcune letture puntano a creare daemon o attività di cron.

Ho solo bisogno di qualcosa di semplice, posso richiamare il riavvio della mia casella e posso fermarmi/avviarlo quando mi pare. il mio script ha una chiamata interna di sonno, e viene eseguito in "loop eterna"

grazie in anticipo

risposta

14

In realtà ho trovato un modo molto migliore di farlo utilizzando gli script ruby.

Ecco come ho fatto:

Prima di tutto, ho installato demone

gem install daemons 

Poi ho fatto:

require 'rubygems' 
require 'daemons' 

pwd = File.dirname(File.expand_path(__FILE__)) 
file = pwd + '/runner.rb' 

Daemons.run_proc(
    'my_project', # name of daemon 
    :log_output => true 
) do 
    exec "ruby #{file}" 
end 

poi creo un file chiamato runner.rb, in cui posso chiamare i miei script come:

require "/var/www/rails/my_project/config/environment" 
Post.send('details....') 

Daemons è una grande gemma!

+5

Meglio usare: "gem install daemon" il singolare è diverso. Probabilmente vuoi http://rubygems.org/gems/daemons – genkilabs

3

RAA - deamons è uno strumento verfy utile per la creazione demoni UNIX da script Ruby.

+0

che sembra piuttosto complicare. Potresti pubblicare un esempio di utilizzo? O niente di più semplice? –

+0

I demoni non sono semplici. Esistono molte ipotesi sulle funzionalità che il sistema operativo si aspetta da un demone ... la creazione e la definizione di tali funzionalità sono una parte significativa della complessità di Daemon. –

0

Da 1.9.x Ruby ha un costruito in funzione di:

Process.daemon