2010-03-14 6 views
8

Bueno, el título lo dice todo. Tengo un script de Ruby que quiero ejecutar como un servicio (uno que puedo iniciar y detener) en mi caja de Linux. Pude encontrar cómo hacerlo en Windows hereRuby script como servicio

Algunas lecturas apuntan a crear daemons o tareas cron.

Solo necesito algo simple. Puedo llamar al reinicio de mi caja, y puedo parar/iniciar cuando quiera. mi guión tiene una llamada interna del sueño, y se ejecuta en "bucle eterno"

gracias de antemano

Respuesta

14

De hecho, he encontrado una forma mucho mejor de hacerlo mediante el uso de los scripts de Ruby.

Esto es cómo lo hice:

En primer lugar, he instalado demonio

gem install daemons 

Entonces hice:

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 

continuación, se crea un archivo llamado runner.rb, en el que puedo llamar a mis scripts como:

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

¡Daemons es una gran joya!

+5

Es mejor usar: "gem install daemons" el singular es diferente. Probablemente quiera http://rubygems.org/gems/daemons – genkilabs

3

RAA - deamons es una herramienta útil para crear verificarlo demonios de UNIX desde scripts de rubí.

+0

que parece más bien complican. ¿Podría publicar un ejemplo de uso? ¿O algo más simple? –

+0

Los demonios no son simples. Hay muchas suposiciones sobre las capacidades que el sistema operativo espera de un daemon ... crear y definir esas capacidades son una parte importante de la complejidad de Daemons. –

0

desde Ruby 1.9.x se ha construido en función de:

Process.daemon

Cuestiones relacionadas