2017-06-30 2 views
0

Der Befehl, den ich ist rails _3.2.13_ new App mit dem neuestenWarum funktioniert mein Rails-Befehl mit system() anders als im Terminal?

Wenn ich es in der Kommandozeile ausführen es eine Rails-Anwendung mit der Version 3.2.13 erstellt, aber wenn ich es mit system "rails _3.2.13_ new #{self.name} -T -B" laufe erstellt es eine Rails-Anwendung ausführen ich versuche, Version von Rails nicht 3.2.13 Version.

Antwort

1

Dies ist ein Ergebnis von Ruby mit /bin/sh Shell Befehle auszuführen, während Sie wahrscheinlich /bin/bash in Terminal täglich verwenden. Die Art und Weise, wie jeder geladen ist und die spezifischen Konfigurationen, die in jedem vorhanden sind, verändern die Konfiguration.

Wenn Sie which rails von beiden Aufrufen an system ausführen und in Ihrem Terminal werden Sie wahrscheinlich verschiedene Pfade sehen. Überprüfen Sie echo $PATH und Sie werden wahrscheinlich auch andere Ergebnisse sehen.

Um die Situation zu lösen, können Sie What's the difference between .bashrc, .bash_profile, and .environment? auschecken, die Ihnen ein viel besseres Verständnis dessen geben wird, was vor sich geht, und dann Ihre Shell-Konfiguration anpassen.

+0

lief ich 'echo $ PATH' in beide und bekam das gleiche Ergebnis ' /Users/xxxxx/.rvm/gems/ruby-2.3.3/bin:/Users/xxxxx/.rvm/gems/ruby- [email protected]/bin: /Users/xxxxx/.rvm/rubies/ruby-2.3.3/bin: /Users/xxxxx/.rvm/bin:/usr/local/mysql/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin' – robzdc

+0

Ich habe gerade festgestellt, dass beim Ausführen von 'Gem List --local' im Terminal die Edelsteine ​​anders sind als mit' system() ' – robzdc

+0

@robzdc klingt wie Sie haben dann verschiedene ENV-Vars. – coreyward

Verwandte Themen