web-dev-qa-db-ja.com

Bundle Installがベンダー/バンドルにgemをインストールするのはなぜですか?

bundle installを実行するたびに、すべてのgemがインストールされます

app_dir/vendor/bundle

パスとディスク領域の負荷を消費します。これにより、開発中にgemsetsをインストールするgemをインストールしようとしました:

bundle install --no-deployement

しかし、これは私にとっては機能せず、vendor/bundleにgemをインストールします。すべてのアプリケーションまたはRuby gemsets location)にグローバルにインストールできるようにするにはどうすればよいですか?.bundle/configを削除しようとしましたが、何も変わりませんでした。

使っています:

rvm version: 1.23.14
Ruby version: 2.0.0-p247
Rails 3.2.13

これが私の~/.bash_profileです:

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
eval "$(rbenv init -)"
alias pg='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log'

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a Shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

私の~/.bashrc

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

必要になる可能性のあるその他の情報:

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ which bundle
/Users/aman/.rvm/gems/Ruby-2.0.0-p247@global/bin/bundle

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv which bundle
/Users/aman/.rbenv/versions/2.0.0-p247/bin/bundle

amandeep@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv which Ruby
/Users/aman/.rbenv/versions/2.0.0-p247/bin/Ruby

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv gemset active
rbenv: NO such command `gemset'

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ which Rails
/Users/aman/.rvm/gems/Ruby-2.0.0-p247@global/bin/Rails

私もこれを試しましたが、助けにはなりませんでした:

bundle install --system

.bundleディレクトリを削除します。

vendor/bundleやデフォルトの場所ではなくgemsetにgemをインストールするのを手伝ってください。

53
  1. bundle envを使用して、パスとバンドル構成を表示します

  2. この後、次のようにバンドルパスを~/.rvm/gems/Ruby-2.0.0-p247に設定します。

    bundle install --path ~/.rvm/gems/Ruby-2.0.0-p247
    

    これはグローバルであり、独自のカスタムパスを使用することもできます。

  3. 投稿するbundle installpathを再び必要とせず、directory(~/.rvm/gems/Ruby-2.0.0-p247 in my caseにないアプリのapp_folder/vendor/bundle)にすべてのgemを常にインストールします

プロジェクトフォルダには、bundlerの構成を保持する.bundleディレクトリがあります。そのフォルダを削除してみてください。 gemのインストールパスをシステム全体の設定にリセットする必要があります。

インストールパスを編集するだけの場合、お気に入りのエディターで.bundle/configを開くと、vendor/bundleへのパスが表示されます。その行を削除すると、他の設定を削除せずにデフォルトに復元します。

また、もう1つの頻度の低いシナリオは、システム全体の設定が台無しになっていることです。 @NaoiseGoldenによると:

ホームフォルダーから.bundleを削除する必要がありました(rm -rf〜/ .bundle)。 bundle envを実行している設定を確認できます

84
Iuri G.

を使用してインストールしてみてください

bundle install --system

当初、バンドルのインストールは--pathフラグを使用して実行され、Bundlerはその設定を記憶するようになったと思います。

バンドラーから manページ

バンドルインストールの呼び出しとBundlerランタイムの間にいくつかのオプションが記憶されます。

バンドルインストールの後続の呼び出しは、元々-pathに渡されたディレクトリにgemをインストールします。 Bundlerランタイムは、その場所でgemを探します。 bundle install --systemを実行すると、このオプションを元に戻すことができます。

[〜#〜] edit [〜#〜]:以下のコメントで述べたように、またそうでない場合は、gemsシステム全体にインストールされます。さまざまなアプリの環境を管理するためにrvmなどを使用している場合は、上記の @ IuriGの答え を確認してください。

25
mu 無

bundle envを実行してみてください。これにより、パス構成が設定されている場所がわかります。

6
Tim Moore

まず、情報によると、rvmとrbenvの両方をインストールしたようです。それは 非常に悪い考え です。あなたはそれらの1つを削除する必要があります(rbenv + bundlerは私にとって魅力のように機能しますが、rvmを試しませんでした)。

質問の確認について.bundle/configプロジェクト内のバンドルのすべての構成がそこにあるため(プロジェクトがまだ削除されている場合は、新しい構成を作成できます)。次の行を追加する(または、既に存在する場合は変更する)必要があります:BUNDLE_DISABLE_SHARED_GEMS: '0'宝石を共有するために、あなたのBUNDLE_PATH:が設定されている(BUNDLE_PATH: vendor 私の場合)。

グローバル構成ファイルについては、~/.bundle/config

また、このmanページは役に立つかもしれません: bundle config

1
Rav.-

パスベンダー/バンドルを避けてシステム全体にGemをインストールするには、プロジェクトディレクトリで次のコマンドを実行するだけです

bundle install --system
1
Rokibul Hasan