2010-03-14 6 views
8

Nun, der Titel sagt alles. Ich habe ein Ruby-Skript, das ich als Dienst ausführen möchte (einen, den ich starten und stoppen kann), auf meiner Linux-Box. Ich konnte finden, wie man es unter Windows macht hereRuby-Skript als Service

Einige Messwerte zeigen auf die Erstellung von Daemons oder Cron-Aufgaben.

Ich brauche nur etwas einfaches Ich kann den Neustart meiner Box aufrufen, und kann jederzeit anhalten/starten. mein Skript hat einen internen Schlaf Anruf, und läuft in „ewige Schleife“

Dank im Voraus

Antwort

14

Ich habe tatsächlich einen viel besseren Weg gefunden, dies zu tun, indem Sie Ruby-Skripte verwenden. Diese

ist, wie ich es tat:

Zunächst einmal ich Daemon Ich habe installiert

gem install daemons 

Dann:

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 

ich dann eine Datei erstellen, genannt runner.rb, in dem ich meine Skripte wie zum Beispiel aufrufen kann:

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

Daemons ist ein großes Juwel!

+5

Besser zu verwenden: "Juwel installieren Daemons" die Einzahl ist anders. Sie möchten wahrscheinlich http://rubygems.org/gems/daemons – genkilabs

3

RAA - deamons ist ein verfy nützliches Werkzeug für die Daemons von Ruby-Skripte Unix zu schaffen.

+0

Das eher zu erschweren scheint. Könnten Sie ein Anwendungsbeispiel posten? Oder etwas einfacher? –

+0

Daemons sind nicht einfach. Es gibt viele Annahmen über Fähigkeiten, die das Betriebssystem von einem Daemon erwartet ... Das Erstellen und Definieren dieser Fähigkeiten ist ein wesentlicher Teil der Komplexität von Daemons. –

0

Von 1.9.x Rubin hat in Funktion einen eingebauten:

Process.daemon

Verwandte Themen