2010-03-14 7 views
8

Eh bien, le titre dit tout. J'ai un script ruby ​​que je veux lancer en tant que service (un que je peux démarrer et arrêter) sur ma machine Linux. J'ai été capable de trouver comment le faire sur Windows hereScript Ruby comme service

Certaines lectures pointent vers la création de démons ou de tâches cron.

J'ai juste besoin de quelque chose de simple Je peux appeler le redémarrage de ma boîte, et je peux arrêter/démarrer quand je le veux. mon script a un appel de sommeil interne et fonctionne en « boucle éternelle »

merci à l'avance

Répondre

14

J'ai effectivement trouvé une bien meilleure façon de le faire en utilisant des scripts ruby.

Voilà comment je l'ai fait:

Tout d'abord, j'ai installé démon

gem install daemons 

Je l'ai fait:

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 

Je crée ensuite un fichier appelé runner.rb, dans lequel je peux appeler mes scripts tels que:

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

Daemons est un grand bijou!

+5

Mieux vaut utiliser: "démons d'installation gem" le singulier est différent. Vous voulez probablement http://rubygems.org/gems/daemons – genkilabs

3

RAA - deamons est un outil utile pour créer verfy daemons à partir de scripts unix rubis.

+0

Cela semble plutôt compliquer. Pourriez-vous poster un exemple d'utilisation? Ou quelque chose de plus simple? –

+0

Les démons ne sont pas simples. Il y a beaucoup d'hypothèses sur les capacités que le système d'exploitation attend d'un démon ... la création et la définition de ces capacités sont une partie importante de la complexité des démons. –

0

De rubis 1.9.x a une fonction intégrée:

Process.daemon

Questions connexes