web-dev-qa-db-ja.com

ロードするファイルがありません-rubygems(LoadError)

最近、Fedora 12にRailsをインストールしました。Linuxも初めてです。 Windows 7ではすべて正常に動作します。しかし、Linuxでは多くの問題に直面しています。助けてください!

基本的なスクリプト/サーバーを起動して実行するために、知識に必要なものをすべてインストールしました。スクリプト/サーバーを試すと、boot.rbがポップアップしてこのエラーが発生します。ここで説明したい詳細の一部:

Rails、Ruby、およびgemがインストールされているディレクトリ、

[vineeth@localhost my_app]$ which Ruby
/usr/local/bin/Ruby

[vineeth@localhost my_app]$ which Rails
/usr/bin/Rails

[vineeth@localhost my_app]$ which gem
/usr/bin/gem

スクリプト/サーバーを実行すると、これがエラーになります。

[vineeth@localhost my_app]$ script/server
./script/../config/boot.rb:9:in `require': no such file to load -- rubygems (LoadError)
 from ./script/../config/boot.rb:9
 from script/server:2:in `require'
 from script/server:2

PATHファイルは次のようになります

[vineeth@localhost my_app]$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin/Ruby:$PATH"

PATHファイルと関係があると思います。ここで変更する必要があるものを教えてください。他に変更する必要がある場合は、お知らせください。

62
Vineeth

2つのRubyバージョンがあるという予感があります。次のコマンドの出力を貼り付けてください:

$ which -a Ruby

コメントに関して更新:

1つのバージョンを破棄し、1つだけ残します。 gemの異なる場所を調べる2つのバージョンで同じ問題が発生しました。数週間夢中になっていた。 SOに賞金をここに入れて、あなたに与えているのと同じ答えを得ました。

私がしたことは、Rubyの1つのインストールを破棄し、ポート経由で管理可能なものを残したことだけでした。これを行うことをお勧めします:

  1. ポートを介してインストールされたRubyバージョン(yumまたは任意のパッケージマネージャー)を削除します。
  2. OSに付属のRubyバージョンを削除します(手動でハードコアrm)。
  3. 異なるプレフィックスを持つポートからRubyバージョンをインストールします(/usrの代わりに/usr/local
  4. rubygemsを再インストールします
102
Eimantas

UbuntuでRubyの複数のコピーがインストールされているため、同様の問題が発生しました。 (1.8および1.9.1)残念ながら、両方が必要です。解決策は以下を使用することです:

$ Sudo update-alternatives --config Ruby
There are 2 choices for the alternative Ruby (providing /usr/bin/Ruby).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/Ruby1.8     50        auto mode
  1            /usr/bin/Ruby1.8     50        manual mode
  2            /usr/bin/Ruby1.9.1   10        manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/Ruby1.9.1 to provide /usr/bin/Ruby (Ruby) in manual mode.

そのバンドルを実行した後、インストールが成功しました。

25

OK、私はRuby noobですが、ここでの回答とは少し異なる修正が行われたので、これが誰かの助けになることを願っています(tl; dr:RVMを使用してシステムを切り替えるRubyバージョンは、rubygemsが期待するものと同じバージョンです)。

まず、 Eimantas で言及されているように、すべてのルビーをリストすることは素晴らしい出発点でした:

> which -a Ruby
/opt/local/bin/Ruby
/Users/Brian/.rvm/rubies/Ruby-1.9.2-p290/bin/Ruby
/Users/Brian/.rvm/bin/Ruby
/usr/bin/Ruby
/opt/local/bin/Ruby

システムで使用されているデフォルトのRubyインスタンスは1.8.7のように見えました。

> Ruby -v
Ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10]

一方、Rubygemsが使用しているバージョンは、RVMが管理する1.9.2バージョンでした。

> gem env | grep 'Ruby EXECUTABLE'
  - Ruby EXECUTABLE: /Users/Brian/.rvm/rubies/Ruby-1.9.2-p290/bin/Ruby

それが間違いなく問題でした。私はRubyを積極的に使用していません(これは単に、実行しようとしているビルドシステムスクリプトの依存関係です)。 rubygemsはすでにRVMによって管理されている1.9.2を予期していたため、RVMを使用してシステムを切り替え、デフォルトとして1.9.2バージョンを使用するようにしました。

> rvm use 1.9.2
Using /Users/Brian/.rvm/gems/Ruby-1.9.2-p290

> Ruby -v
Ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]

その後、「そのようなファイルはありません」という問題はなくなり、スクリプトが機能し始めました。

18
Brian Moeskau

私の場合、rubygemsがインストールされていなかったことを追加したいと思います。

Sudo apt-get install rubygemsを実行すると問題が解決しました!

13
miguelcobain

プロジェクトを開始してみてください:

./script/server

Ruby 1.9.2を使用している場合はscript/serverの代わりに( Ruby 1.9.2にアップグレードした後にconfig/bootを必要とする奇妙な不能から

12
ohho

他の誰かがこの問題をググっている場合:使いたいと思った「rubygems」フォルダーを見つけ、それを$ RUBYLIB環境変数に追加することで修正できました。

find / -name "rubygems" -print

見つかったら、親ディレクトリを環境に追加します。 bashでは、次のようになります。

export RUBYLIB=/path/to/parent

これで、gemを実行すると、正しいライブラリディレクトリが選択され、オフになり実行されます。

11
Andrew Kvochick

同様の問題があり、RUBYLIB envを設定することでそれを解決しました。

私の環境ではこれを使用しました:

export RUBYLIB=$Ruby_dir/lib/Ruby/1.9.1/:$Ruby_dir/lib/Ruby/1.9.1/i686-linux/:$RUBYLIB
6
RobisonSantos

同様の問題があり、単純なRubyスクリプトを実行するだけで、必要なgemが必要になりました...そのエラーメッセージが表示されました。呪文を以下から変更したとき:

Ruby test.rb

Ruby -rubygems test.rb

動作しているようです。

6
ftravers
gem install bundler

私のために問題を修正しました。

1
Gagan Gami

複数のRubyがインストールされている場合は、そのうちの1つを削除するだけで十分な場合があります。追加ポートをインストールしたMacosXでは、Rubyインストールを削除します。

Sudo port -f uninstall Ruby
1
cande

これは、Googleが「ubygems」を「rubygems」に自動修正した後、グーグル'require': cannot load such file -- ubygems (LoadError)を実行したときの最初の回答です。これはRuby 2.4と2.5の間の意図的な変更であることが判明しました( Bug#14322 )。 Rubyバージョンを考慮せずにユーザーgemsディレクトリを検出するスクリプトは、ほとんどの場合失敗します。

ルビー2.4

Ruby -rubygems -e 'puts Gem.user_dir'

Ruby 2.5

Ruby -rrubygems -e 'puts Gem.user_dir'
1
Nice Guy IT

私もこの問題を抱えていました。私の解決策は、ファイルGemfile.lockを削除し、gemsを再度インストールすることです:バンドルインストール

1
datnt

/bin/bash --loginを実行するだけで、奇妙なことに、私にとってはうまくいきました。説明できません。

0

Rbenv + passenger + nginxを使用しても同じ問題に遭遇しました。私の解決策は、次の2行のコードをnginx構成に追加するだけです。

passenger_default_user root;
passenger_default_group root;

詳細な回答はこちら: https://stackoverflow.com/a/15777738/445908