5

私はrvmを使用して、次のことを行っています。

rvm install ree    <--- (Ruby Enterprise Edition), or this can be 1.8.7 or 1.9.2
rvm ree
rvm gemset create 'proj'
cd path/to/proj
bundle install

したがって、そのプロジェクトのGemfileは次のように述べています。

gem 'rails', '3.0.0'

bundle install超高速で、レポート

Using rails (3.0.0) 

でもその後タイプすると

$ rails -v
/Library/Ruby/Site/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
    from /Library/Ruby/Site/1.8/rubygems.rb:214:in `activate'
    from /Library/Ruby/Site/1.8/rubygems.rb:1082:in `gem'
    from /usr/bin/rails:18

$ which rails
/usr/bin/rails

だからbundle install、宝石としてレールをインストールしませんか?しかし、私がタイプscript/rails -vすると、それは3.0.0であることを示しています

4

2 に答える 2

12

正解です。bundle install従来の意味での宝石としてRailsをインストールしません。次に、その理由を説明します。

Bundlerがインストールを実行すると、gemsにディレクトリがインストールされます~/.bundle/<type-of-ruby>/<version>/gems。これは、それらをシステムパスにインストールする通常の方法とは異なります。gemがシステムパスにインストールされると、そのディレクトリがロードパス内にあるため、実行可能ファイルが使用可能になります。これは悪いことです。gemごとに実行可能ファイルを1つしか持てないからです。SomeGem v2をインストールしましたが、SomeGem v1のジェネレーターを使用したいですか?残念な。

Bundlerは、前述の場所にインストールし、必要なgemの特定のバージョン(の内部で指定)のみを必要とすることでこの問題を解決しますGemfile。単に実行することで、システムrails実行可能ファイルを実行しようとします(実行によって提供されるもののように) 。 Bundlerのものよりも(Railsプロジェクトのために行うことによって提供されます)。gem install railsbundle install

Bundlerがインストールするものを実行するには、Railsの任意のバージョンを指定するbundle exec railsを含むディレクトリ内でこのように実行する必要があります。Bundlerは特定のバージョンのRailsをロードし、コマンドのプレフィックスGemfileだけをトレードオフして、それらを並べて実行できるようになります。bundle exec

個人的には、いくつかのコマンドの前にこれを2文字にエイリアスしました。これbeは、私の意見では、第7サークルの宝石紛争地獄を回避するための価値のあるトレードオフです。

于 2010-09-07T22:27:31.117 に答える
0

手順は正しいようです(新しく作成されたgemsetも使用してください。確認しrvm inforvm ree@projgemset:'proj'と表示されていない場合は実行してください)。頭を突き出して提案を試みます。ところで、レールはバンドラーと完全にインストールされます。

イェフダ・カッツを含む多くのバンドラーユーザーがいるように、私は奇妙な行動システムの宝石とローカルの宝石とで苦労してきました。

つまり、 bundlegemを取得するにbundleinstallを実行して(「標準」gemが見つからないというエラーが発生する)、gem install bundlerを実行してから、別のバンドルインストールを実行すると、bundlegemはrvmではなくシステムにインストールされます。 。

解決策:.bundleを削除します(そしてgemはbundlerをアンインストールしますか?)。次に、新しい用語を開き、rvm ree @ projを実行し、バンドルをインストールする前にgeminstallbundlerを実行します。

Yehudaは投稿で、新しいバンドラーバージョンで修正されていると述べていますが、私はほんの数日前にこれを経験しました(バンドラー1.0.0)。私が混乱よりも多くの助けをテーブルにもたらしたことを願っています:)

于 2010-09-13T08:06:05.823 に答える