12

ruby 2.0/rails 4.0 にアップグレードし、新しい Rails プロジェクトで bundle install を実行しようとしています。まだインストールされていないものにヒットすると、次のように吐き出します。

Installing coffee-rails (4.0.0.beta1) 
Errno::ENOENT: No such file or directory - /usr/lib/ruby/gems/2.0.0/build_info/coffee-rails-4.0.0.beta1.info
An error occurred while installing coffee-rails (4.0.0.beta1), and Bundler cannot continue.
Make sure that `gem install coffee-rails -v '4.0.0.beta1'` succeeds before bundling.

それから私は実行します

gem install coffee-rails -v '4.0.0.beta1'

そして、それは正常にインストールされ、bundle install を再実行し、まだインストールしていない gem バージョンが実行されるたびにこれを繰り返す必要があります。ここで何が問題なのですか?

4

4 に答える 4

8

私の場合、バンドルが gem を /usr/lib/ruby/gems/2.0.0 のグローバルな場所にインストールしようとしていることがわかりましたが、sudo を介して呼び出さなかったため、パーミッション エラーが発生しました。とにかくホームディレクトリにインストールしたかったので、できることがわかりました:

GEM_HOME=~/.gem/ruby/2.0.0/ bundle

そしていつまでも幸せに暮らしてください。

于 2013-07-10T19:44:32.020 に答える
4

実行可能ファイルは単なるシェル スクリプトであり、特定のbundleRuby 実行可能ファイル (または ) を指すシバン行があります/usr/bin/env rubygemシバン行は、実行可能ファイルのシバン行が指しているバージョンではなく、2.0 バージョンではなく、別のバージョンの Ruby を指しているようです。

これを実行して、何を指しているのかを確認します。head -1 $(which bundle)

表示される行が何であれ、#!プレフィックスを削除し、その行を-vスイッチで実行して、それがどのバージョンの Ruby であるかを確認します (明らかでない場合)。したがって、シバン行が#!/usr/bin/ruby実行された/usr/bin/ruby -v 場合、私の理論が正しい場合、そこには 2.0 以外のバージョン番号が表示されます。

あなたが言ったことに基づいて、gem実行可能ファイルは 2.0 Ruby を指しているため、ここでの修正は、bundler gem をアンインストールしてから再インストールすることです。これにより、適切な Ruby 2.0 シバン行が実行可能ファイルに追加bundleれます。

于 2013-04-16T02:04:46.800 に答える