1. ホーム
  2. ruby-on-rails

Ubuntuでgemsを使用するにはどうすればよいですか?

2023-10-12 09:09:54

質問

最近 Ubuntu 9.04 にアップグレードしたのですが、gems を使用する際に問題があります。 apt-get を使用して Ruby、Rubygems、および Rails をインストールしました。 その際 rails コマンドは動作します。

続いて、capistranoとherokuなどのgemsをインストールしました。 そのために、私はコマンドを使いました。

sudo gem install XXX

を使いたいときは cap コマンドを使いたいのですが、うまくいきません。

bash: cap: command not found

他のgemコマンドと同じです。

gemコマンドを動作させるために、何か特別なことをしなければならないのでしょうか?

どのように解決するのですか?

私のジェムはどこですか?

あなたのジェムがどこに保存されているかは 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:"のセクションを見ると、私のノートパソコンではgemsは2つの場所に保存できることがわかります。 /usr/lib/ruby/gems/1.8 または .gem というディレクトリを作成します。

また、実行ファイルはEXECUTABLE DIRECTORYに格納されていることがわかります。この場合、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

をシェルプロンプトで表示します。

これは私自身のサーバーの 1 つからのサンプルで、ユーザー名は "chris"、マシン名は "chris-laptop" となっています。

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をインストールしても読み込まない Gem 環境と Gem パスが同期していないことがあるのです。

rb(main):003:0> Gem.path

=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit

ここでのRubyプロセスは、Gemsのために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 environmentの出力をよく見てください。

  - GEM PATHS:
     - /opt/ruby1.9/lib/ruby/gems/1.9.1

Gem.pathが返すパスと同じではありません。

["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]

何が原因かを正確に言うのは難しいのですが lib/rubylib/ruby1.9 に変更する必要がありますが、おそらく開発者は複数のRubyのバージョンで作業していたのでしょう。手っ取り早く mv または ln で解決します。

もし、複数のRubyのバージョンを扱う必要があるのなら、本当に rvm .