Wie kann xcode beim Ausführen eines Skripts die korrekte Version von Ruby verwenden?

8

In xcode habe ich eine 'run script' Build-Phase, die ein Ruby-Skript ausführt. Es scheint jedoch, dass xcode versucht, es mit der Standard-Mac-Version 1.8 von Ruby und nicht mit der neuesten Version auszuführen. Da das Skript ein Schmuckstück benötigt, schlägt es mit einem Fehler require fehl und der Pfad im Fehler verweist auf /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/

Offensichtlich macht mich der 1.8 in diesem Pfad misstrauisch.

Wenn ich das Terminal öffne und den Befehl ruby -v ausführe, gibt es korrekt 2.0.0p0 zurück, das ich installiert und als Standard mit RVM gesetzt habe.

Wie kann ich Xcode dazu bringen, am richtigen Ort zu suchen? Oder interpretiere ich diesen Fehler falsch?

Aktualisierung:

Um ein wenig mehr Informationen zu geben, hier ist der genaue Fehler, den der Compiler wirft:

%Vor%     
Mark Wheeler 02.04.2013, 23:33
quelle

5 Antworten

1

Ich habe dies verwendet, um Xcode mit einem anderen Interpreter als dem Standard-Systeminterpreter auszuführen:

  1. Beenden Sie Xcode, wenn es geöffnet ist und gehen Sie zu Ihrem Terminal.
  2. Aktiviere den gewünschten rvm.
    rvm use 2.0.0p0
  3. Dann öffne Xcode vom Terminal:
    open -a Xcode

Um dies zu testen, können Sie etwas in Ihren Build einfügen, das die Version des Interpreters oder verfügbare Edelsteine ​​protokolliert.

    
chb 06.04.2013 17:43
quelle
1

Wenn Xcode die Umgebungsvariablen IIRC ausgibt, unterscheidet sich die von Xcode festgelegte $PATH von der $PATH , die Sie in einer normalen Terminalsitzung laden.

Damit haben Sie (mindestens) zwei Möglichkeiten, das Problem zu beheben:

  1. Sie können Ihr Skript so bearbeiten, dass es direkt auf den rvm-installierten Ruby zeigt. Dies ist möglicherweise besser, wenn Ihr Skript auf mehreren Systemen funktionieren muss (auch wenn es nicht mit der Funktionsweise von rvm zu tun hat).

  2. Laut Peter Hoseys Kommentar zu Chris Hansons Antwort in diese Frage, Sie können Umgebungsvariablen in ~/.MacOSX/environment.plist festlegen, die für alle von Ihnen gestarteten Prozesse gelten.

zadr 06.04.2013 20:23
quelle
1

Ich hatte eine ähnliche Situation, aber das Skript, das ausgeführt wurde, hatte eine Shebang-Linie, die sich auf das vom System installierte Ruby bezieht.

%Vor%

Meine Lösung, die gefährlich sein könnte, war, /usr/bin/ruby durch einen Symlink zu dem von RVM installierten Ruby zu ersetzen.

Hier sind die Schritte, die ich gemacht habe:

  1. Installieren Sie RVM für mehrere Benutzer (die Option sudo von Ссылка )
  2. Fügen Sie mich zur Gruppe rvm mit der App Einstellungen (Einstellungen & gt; Benutzer und Gruppen) hinzu.
  3. Melden Sie sich ab und wieder an, um sicherzustellen, dass die Gruppenmitgliedschaft vom Betriebssystem eingehalten wird.
  4. Installiere die benötigten Edelsteine ​​von der Kommandozeile. Da ich jetzt RVM-Manager bin, weil ich in der rvm -Gruppe bin, betrifft dies das Zeug unter /usr/local/rvm .
  5. Verschieben Sie /usr/bin/ruby aus dem Weg und verbinden Sie den RVM-Standard-Ruby an seiner Stelle. (Dies ist der gefährliche Teil. Es kann zu Problemen führen, wenn Programme davon ausgehen, dass sie die vom System installierte Version verwenden werden.)

Um den Symlink zu ersetzen, habe ich:

%Vor%

Nachdem ich dies getan hatte (während Xcode nicht lief), benutzte das Skript das nächste Mal, als ich das Projekt in Xcode erstellte, den Ruby, den ich mit RVM installiert hatte.

    
amacleod 22.08.2013 19:17
quelle
1

Angenommen, Sie geben Ihre Version von rvm ruby ​​in Ihrem Projekt an (und ich denke, Sie sollten es sein), denke ich, dass dies eine allgemeingültigere Antwort als die derzeitigen ist.

In groben Zügen sollten Sie in Ihrem Shell-Skript

verwenden %Vor%

Ich beziehe mich in dieser Antwort auf diese ausführbaren Details.

    
Clay Bridges 07.10.2014 14:59
quelle
0

Ich hatte dieses Problem auch, da ich xcpretty verwenden wollte. Am Ende mache ich folgendes, um auf den richtigen Edelstein-Ordner zu zeigen:

%Vor%

welcher Edelstein Sie wollen, wird in diesem Ordner sein.

Auch wenn Sie nur wollen, dass Sie Ruby Home-Pfad:

%Vor%

xcpretty war unter der ersten Option in bin / in meinem Szenario wie unten. Also für mich mache ich folgendes:

%Vor%

Sie können vorher herausfinden, wo sich Ihr Ruby-Befehl befindet    welches

    
RicardoDuarte 25.10.2016 08:14
quelle

Tags und Links