6

私の組織には、自動化されたテストで使用される社内の gem が多数ありますが、本番環境のデプロイには必要ありません。Bundler を使用しようとしているので、Gemfile でこれらの gem を次のようにラップしました。

group :test, :development do
    gem 'dashboard_summary'
end

ただし、実行すると:

$ bundle install --without staging development test

私はまだ得る

Could not find gem 'dashboard_summary (>= 0) ruby' in the gems available on this machine.

Bundler がその gem を無視しないように指示したのに、なぜそれを無視しないのかを理解しようとしています。

4

3 に答える 3

5

これは予期される動作です。ドキュメントから:

このオプションは、指定されたグループへの gem のインストール--withoutをスキップしますが、それでもそれらの gem をダウンロードし、それらを使用して Gemfile(5) 内のすべての gem の依存関係を解決します。

最新Gemfile.lockのものは、依存関係を再度解決する必要がないことを示唆しているかもしれませんが、この場合でもすべての gem がダウンロードされているようです。

于 2013-05-24T20:34:24.743 に答える
3

ステージング、開発、およびテストを含むグループを定義していません。あなたのグループにはテストと開発しかありませんでした。

Bundler は 3 つの名前すべてを含むグループを無視しようとしているので、ステージングを追加できます

group :test, :development, :staging do
    gem 'dashboard_summary'
end

またはあなたが使用することができます

 $ bundle install --without test development
于 2013-05-24T19:14:46.847 に答える
2

なぜあなたがstagingそこにいるのかわからないのですか?しかし、これはうまくいくはずです

 bundle install --without test development

bundle configBUNDLE_WITHOUTに記載されている構成環境変数を設定することもできます。

あなたが使用することができます

gem 'dashboard_summary', require: false

これは、起動時に gem をロードしないため、gem を使用したいときにそれを要求する必要があります。これは、依存関係のために Gemfile を保持する必要がある場合に役立ちますがdashboard_summary、ロードにかかる時間を節約し、現在発生しているエラーを取得しません。少なくとも試してみることです。

于 2013-05-24T19:18:19.843 に答える