Wo sind meine Edelsteine?
Mit dem gem environmentBefehl können Sie herausfinden, wo Ihre Edelsteine gespeichert sind . Zum Beispiel:
chris@chris-laptop:~$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.2
- RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/bin/ruby1.8
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- /home/chris/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
Wenn Sie sich den Abschnitt "GEM PATHS:" ansehen, können Sie sehen, dass Edelsteine an zwei Stellen auf meinem Laptop gespeichert werden können: /usr/lib/ruby/gems/1.8oder im .gemVerzeichnis in meinem Home-Verzeichnis.
Sie können auch sehen, dass ausführbare Dateien im EXECUTABLE DIRECTORY gespeichert sind, in diesem Fall /usr/bin.
Denn /usr/binin meinem Weg läßt dies mich laufen cap, merb, railsusw.
Aktualisieren Sie Ihren Pfad
Wenn sich Ihr EXECUTABLE DIRECTORY aus irgendeinem Grund nicht auf Ihrem Pfad befindet (z. B. /var/lib/gems/1.8/bin), müssen Sie Ihre PATH-Variable aktualisieren.
Angenommen, Sie verwenden die Bash-Shell. Sie können dies schnell für die aktuelle Sitzung tun, indem Sie an der Shell-Eingabeaufforderung Folgendes eingeben: Stellen wir uns vor, Sie möchten /var/lib/gems/1.8/bindem Pfad etwas hinzufügen :
export PATH=$PATH:/var/lib/gems/1.8/bin
und drücken Sie die Eingabetaste. Dadurch wird das neue Verzeichnis an das Ende des aktuellen Pfads angehängt. Beachten Sie den Doppelpunkt zwischen $PATHund/var/lib/gems/1.8/bin
Um den Wert für alle Sitzungen festzulegen, müssen Sie entweder Ihre .profileoder Ihre .bashrcDatei bearbeiten und dieselbe Zeile am Ende der Datei hinzufügen. Normalerweise bearbeite ich meine .bashrcDatei aus keinem anderen Grund als dem, was ich immer getan habe. Wenn Sie fertig sind, speichern Sie die Datei und aktualisieren Sie Ihre Umgebung, indem Sie Folgendes eingeben:
bash
an der Shell-Eingabeaufforderung. Dadurch wird das erneut .bashrcgelesen.
Sie können den aktuellen Wert jederzeit $PATHdurch Eingabe überprüfen
echo $PATH
an der Shell-Eingabeaufforderung.
Hier ist ein Beispiel von einem meiner eigenen Server, auf dem mein Benutzername "chris" und der Computername "chris-Laptop" lautet:
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
Mein Edelstein wird nicht geladen!
" Ruby-Edelsteine werden trotz Installation nicht geladen " hebt ein häufiges Problem bei der Verwendung mehrerer verschiedener Ruby-Versionen hervor. Manchmal sind die Gem-Umgebung und der Gem-Pfad nicht mehr synchron:
rb(main):003:0> Gem.path
=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
Jeder Ruby-Prozess hier sucht nur an einem Ort nach seinen Edelsteinen.
:~/$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
- INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9
- EXECUTABLE DIRECTORY: /opt/ruby1.9/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
- /home/mark/.gem/ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
Schauen Sie sich die Ausgabe der Edelsteinumgebung genau an:
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
Dies ist nicht derselbe Pfad wie der von Gem.path zurückgegebene:
["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
Es ist schwer zu sagen, was genau zu lib/rubyeiner Änderung geführt hat, lib/ruby1.9aber höchstwahrscheinlich hat der Entwickler mit mehreren Ruby-Versionen gearbeitet. Eine schnelle mvoder lnwird das Problem lösen.
Wenn Sie mit mehreren Ruby-Versionen arbeiten müssen, sollten Sie wirklich rvm verwenden .