So zeigen Sie Ruby bei Aufruf über ein Shell-Skript an, dass RVM-Standard-Ruby angezeigt wird

So zeigen Sie Ruby bei Aufruf über ein Shell-Skript an, dass RVM-Standard-Ruby angezeigt wird

mein Ruby-Programm:

#echoHW.rb
while 1 < 2
  sleep(10)
  puts "hey!"
end

das Bash(?)-Skript, das es aufruft:

#echoHW.sh
ruby -v
ruby echoHW.rb "$@" & 

Ich habe RVM installiert und dabei sowohl den Einzelbenutzer- als auch den Mehrbenutzermodus ausprobiert. Meine Standardeinstellung ist 1.9.3p125, aber egal, was ich mache, wenn ich es ausführe, wird 1.8.7 ausgeführt, was offensichtlich die Systemversion von Ruby ist.

Ich vermute, dass sich das leicht beheben lässt – ich möchte, dass das Skript den Ruby aufruft, den ich mit RVM als Standard festgelegt habe – aber ich bin ratlos.

TIA

BEARBEITEN: die Ausgabe von RVM-Info:

qe2user@qe2server:~/Ruby/query_engine$ rvm info

ruby-1.9.3-p125:

System: uname: "Linux qe2server 2.6.32-33-server #70-Ubuntu SMP Donnerstag, 7. Juli 2011, 22:28:30 UTC x86_64 GNU/Linux" bash: "/bin/bash => GNU bash, Version 4.1.5(1)-Release (x86_64-pc-linux-gnu)" zsh: " => nicht installiert"

rvm: Version: „rvm 1.12.3 (stabil) von Wayne E. Seguin, Michal Papis [htps://rvm.io/]“ aktualisiert: „vor 13 Stunden, 39 Minuten und 42 Sekunden“

ruby: Interpreter: „ruby“ Version: „1.9.3p125“ Datum: „16.02.2012“ Plattform: „x86_64-linux“ Patchlevel: „16.02.2012 Revision 34643“ Vollversion: „ruby 1.9.3p125 (16.02.2012 Revision 34643) [x86_64-linux]“

Häuser: Edelstein: "/usr/local/rvm/gems/ruby-1.9.3-p125" Rubin: "/usr/local/rvm/rubies/ruby-1.9.3-p125"

Binärdateien: Ruby: „/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby“ Irb: „/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/irb“ Gem: „/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/gem“ Rake: „/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin/rake“

Umgebung: PFAD: "/usr/local/rvm/gems/ruby-1.9.3-p125/bin:/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin:/usr/local/rv /rubies/ruby-1.9.3-p125/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" GEM_HOME: "/usr/local/rvm/gems/ruby-1.9.3-p125" GEM_PFAD: "/usr/local/rvm/gems/ruby-1.9.3-p125:/usr/local/rvm/gems/ruby-1.9.3-p125@global" MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-1.9.3-p125" IRBRC: "/usr/local/rvm/rubies/ruby-1.9.3-p125/.irbrc" RUBYOPT: "" Gemset: ""

Antwort1

Es hört sich nicht so an, als hätten Sie Ihren Standard-Ruby-Interpreter unter RVM richtig eingestellt. Beispiel: Mit einem richtig installierten RVM:

# Assumes that 1.9.3-p125 is already fully-installed under RVM.
rvm --default use ruby-1.9.3-p125

Dadurch wird sichergestellt, dass das angegebene Ruby verwendet wird und nicht der Systemstandard. Sie können das aktuelle Ruby jederzeit über rvm usedie Shell-Eingabeaufforderung ändern.

Wenn Sie jedoch innerhalb eines Skripts etwas anderes als die Standardeinstellung verwenden möchten, können Sie Ihr Skript mit einem anderen Shell-Skript umschließen, das den aktuellen Ruby mithilfe von RVM einstellt. Wenn dies keine Option ist, können Sie auch direkt in Ihrer Shebang-Zeile einen bestimmten Interpreter aufrufen:

#!/home/user/.rvm/rubies/ruby-1.9.3-p125/bin/ruby

Dies kann jedoch auch erfordern, dass Sie einige Umgebungsvariablen wie MY_RUBY_HOME und RUBY_VERSION ( rvm infoeine vollständige Liste finden Sie unter) ändern, damit verschiedene Bibliotheken und Gems funktionieren.

Das Ändern der Umgebung kann für Sie notwendig sein oder auch nicht - viel hängt davon ab, was Ihr Ruby-Skript macht - aber wenn esIstBei Bedarf können Sie mit verschiedenen Optionen auf der Befehlszeile experimentieren, bis alles zusammen funktioniert. Zum Beispiel:

$ MY_RUBY_HOME=~/.rvm/rubies/ruby-1.9.3-p125 \
    ~/.rvm/rubies/ruby-1.9.3-p125/bin/ruby -e 'puts("hello")'
hello

Informieren Sie sich auch über das Projekt.rvmrcDateien. Dies ist eine weitere Möglichkeit, um sicherzustellen, dass Ihre Arbeitsumgebung das Ruby und Gemset verwendet, das Sie für Ihre spezielle Anwendung benötigen.

verwandte Informationen