Es gab eine Reihe von RailsCasts Episoden, die Hintergrundaufgaben abdeckten.
Am passendsten zu Ihrem Problem ist vielleicht "Rake in Background", was könnte ein guter Ausgangspunkt sein? Wie der Name schon sagt, deckt es auslösende Rake-Aufgaben von Ruby on Rails ab.
Die offensichtlichste Lösung für das Ändern von Systemeinstellungen wäre ein Daemon, der als root ausgeführt wird und einige (sehr begrenzte und streng bereinigte) Eingaben akzeptiert, wie einen neuen Hostnamen oder die neue IP-Adresse für den Server .. Die anderen Episoden "Starling and Workling" und "Custom Daemon" können auch dabei helfen.
Eine sauberere Lösung wäre sudo
zu verwenden. Es gibt zwei (ähnliche) Möglichkeiten, dies zu tun, die ich mir vorstellen kann:
Erlaube Sudo Zugriff auf bestimmte Befehle (wie hostname
, ifconfig
) an den Benutzer, der die Rake-Aufgaben ausführen wird. Dies kann zu großen Sicherheitsproblemen führen. Mein Lieblingsbeispiel dafür ist sudo Zugang zu vim ermöglicht, die harmlos scheint, bis Sie sudo vim
laufen, dann !bash
und plötzlich haben Sie vollen Root-Zugriff auf einen Computer mit einem Texteditor ..
Die andere Art und Weise (das einfacher ist, um sicher zu gehen) - eine Rake-Aufgabe (oder ein paar separate Skripte) haben, die die erforderlichen Aufgaben ausführt (zB den Hostnamen ändern). Say, /usr/bin/myapp_systemtasks
gehört zu root:root
, dann erlauben sudo Zugriff auf das Skript. Stellen Sie sicher, dass Sie sehr vorsichtig sind, um die Eingabe, die das Skript akzeptiert, zu bereinigen (um Dinge wie Shell-Escaping zu verhindern).
Also, es gibt Möglichkeiten, es zu tun, aber am Ende des Tages machen Sie eine Web-Schnittstelle zu System-Level-Konfigurationen, die sehr schwierig ist, sicher zu tun .. Was auch immer Sie sich entscheiden zu tun, stellen Sie sicher es ist gut getestet (von Ihnen und anderen)
Das ist ein großen Informationen, aber ich bin nicht sicher, ob es mein Problem löst. Diese Aufgaben sind nicht langwierig und müssen nicht unbedingt im Hintergrund ausgeführt werden. Auch ein separater Server, nur um den Host umzubenennen, ist ein wenig übertrieben. –
Auch wenn es übertrieben ist, ist es die einfachste Möglichkeit, Jobs innerhalb einer Rails-Anwendung einem anderen Benutzer zu spawnen. Es ist nicht der Hauptzweck des Plugins, aber es wird den Job sauber und schön machen. – changelog