1

shared/bundlesCapistrano を使用して Rails アプリをデプロイするときに、システム全体にインストールされている gem が見つからない場合にのみ、Bundler に gem をディレクトリにインストールさせたいと考えています。どうすればいいのですか?

たとえば、システムに既にpggemv 0.14がインストールされている場合、Bundler でそれを使用しshared/bundles、アプリケーションのディレクトリに新しい gem をビルドしてインストールしないようにします。

私は Ubuntu Server を使用しており、RVM は複数のユーザー用にインストールされています。

4

2 に答える 2

4

Bundlerでは、共有(rubygems)およびベンダー(bundler)のgemを使用できます。デフォルトbundler/capistranoでは、次のように構成されています。

set :bundle_flags, "--deployment --quiet"

ベンダーの宝石のみを強制しますが、

明示的に共有gemに戻すことができます:

set :bundle_flags, "--system --quiet"

引き続きインストールしvendorますが、共有gemも使用します。

set :bundle_flags, "--path #{shared_path}/bundles --quiet"

デプロイメントがすでに--deployment(デフォルト)で実行されている場合は、以下を使用してデプロイを1回実行すると役立つ場合があります。

set :bundle_flags, "--no-deployment"
于 2013-02-12T16:09:03.883 に答える
0

これは実際には Bundler の機能であり、基本的には依存関係の分離です。アプリを外部のシステム gem に依存させたくありません。システム gem を更新すると、実行中のアプリケーションに影響を与える可能性があります。

すでに capistrano を使用している場合は、とにかくrequire "bundler/capistrano"それらをインストールするスクリプトで使用する必要があります。shared/bundles事前にパッケージ化を検討することもできます: http://gembundler.com/v1.2/bundle_package.html

于 2013-02-12T15:50:52.240 に答える