私の宝石はどこにありますか?
コマンドを使用して、宝石が保存されている場所を見つけることができますgem environment
。例えば:
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:
「GEM PATHS:」セクションを見ると、gem が私のラップトップの 2 つの場所、/usr/lib/ruby/gems/1.8
または.gem
私のホーム ディレクトリのディレクトリに保存されていることがわかります。
また、実行可能ファイルが EXECUTABLE DIRECTORY に格納されていることもわかります。この場合は/usr/bin
.
がパスにあるため、、など/usr/bin
を実行できます。cap
merb
rails
PATH の更新
何らかの理由で、EXECUTABLE DIRECTORY がパス上にない場合 (たとえば、/var/lib/gems/1.8/bin の場合)、PATH 変数を更新する必要があります。
bash シェルを使用していると仮定します。シェルプロンプトで次のように入力すると、現在のセッションでこれをすばやく行うことができます。/var/lib/gems/1.8/bin
パスに追加したいふりをしましょう:
export PATH=$PATH:/var/lib/gems/1.8/bin
リターンを押します。これにより、新しいディレクトリが現在のパスの末尾に追加されます。$PATH
との間のコロンに注意してください/var/lib/gems/1.8/bin
すべてのセッションの値を設定するには、.profile
または.bashrc
ファイルを編集して、ファイルの最後に同じ行を追加する必要があります。私は通常、.bashrc
それがいつも行っていること以外の理由でファイルを編集します。終了したら、ファイルを保存し、次のように入力して環境を更新します。
bash
シェルプロンプトで。これにより、.bashrc
が再読み込みされます。
$PATH
いつでも、次のように入力して現在の値を確認できます
echo $PATH
シェルプロンプトで。
これは、私のユーザー名が「chris」で、マシン名が「chris-laptop」である、私自身のサーバーの 1 つのサンプルです。
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:~$
Gem が読み込まれません。
「Ruby gems will not load even even without installed」は、複数の異なるバージョンの Ruby を使用する場合によくある問題を浮き彫りにしています。Gem 環境と Gem パスが同期しなくなることがあります。
rb(main):003:0> Gem.path
=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
ここでのすべての Ruby プロセスは、その Gem を 1 か所でしか検索しません。
:~/$ 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/
gem 環境の出力を注意深く見てください。
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
これは、Gem.path によって返されるパスと同じではありません。
["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
lib/ruby
変更の正確な原因を特定するのは困難ですlib/ruby1.9
が、開発者が複数の Ruby バージョンで作業していた可能性が最も高いです。迅速mv
またはln
問題を解決します。
複数の Ruby バージョンで作業する必要がある場合は、本当にrvmを使用する必要があります。