2008-10-17 5 views
8

Ich möchte ein Skript schreiben, in einem Edelstein verpackt werden, der seine Parameter ändern wird und dann einen neuen Ruby-Prozess mit den modifizierten Parametern exec. Mit anderen Worten, etwas Ähnliches wie ein Shell-Skript, das seine Parameter ändert und dann eine exec $SHELL $* tut. Um dies zu tun, brauche ich eine robuste Möglichkeit, den Pfad der Ruby-Programmdatei zu ermitteln, die das aktuelle Skript ausführt. Ich muss auch die vollständigen Parameter erhalten, die an den aktuellen Prozess übergeben werden - sowohl die Ruby-Parameter als auch die Skriptargumente.Wie kann ich den vollständigen Pfad der ausführbaren Ruby-Datei zuverlässig ermitteln?

+0

nicht aktualisieren Sie Ihre Frage mit einer Antwort inline, fügen Sie einfach eine Antwort auf Ihre eigene Frage. Auf diese Weise können die Leute Ihre Antwort verbessern. –

+1

Beachten Sie, dass Sie auch 'require 'rbconfig'' benötigen –

Antwort

6

Der Rake Quellcode tut es wie folgt aus:

RUBY = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']). 
    sub(/.*\s.*/m, '"\&"') 
+1

Config ist veraltet. benutze RbConfig. –

4

Wenn Sie auf Linux überprüfen möchten: Lesen von Dateien:

  • /proc/PID/exe
  • /proc/PID/cmdline

Weitere nützliche Informationen finden Sie in/proc/PID dir

0

Für die Skriptparameter verwenden Sie natürlich ARGV.

Verwandte Themen