0

実行してbundle packageからbundle install --local実行するunicorn_railsと、ユニコーンはまだシステムgemにアクセスしているようです。私は得続けます:

すでにラック 1.5.2 を有効にしていますが、Gemfile にはラック 1.2.8 が必要です。bundle exec を使用すると、これを解決できる場合があります。

ラック 1.2.8 はベンダー/キャッシュにあるため、そうすべきではありません。

bundle execそれはリソースを浪費しているように見え、bundle packageそもそもこの混乱全体を避けることが全体のポイントであるため、機能しません。

では、ベンダー/キャッシュの宝石のみを使用するバンドル環境をユニコーンに取得させるにはどうすればよいですか?

4

1 に答える 1

3

bundle install --localgem を取り込みvendor/local、デフォルトのgemコマンドを使用してそれらをインストールします。デフォルトでは、これはシステム全体のインストールです。RVM などを使用している場合は、現在の RVM gemset に含まれます。

本番環境にインストールしていて、アプリを からの gem に限定したい場合はvendor/localbundle install --deployment. これにより、gem がインストールされvendor/bundle、Bundler がそれらの gem (システムの gem ではなく、それらの gem のみ) を使用するように設定されます。gem が にない場合は、vendor/localダウンロードします。は更新されません。Gemfile.lockベスト プラクティスは、すべての gemvendor/cacheを最新の状態に保ち、gem をダウンロードしようとしないようにすることです。

bundle execいずれかの gem からバイナリを実行している場合を除き、使用する必要はありません。実行rails serverしていてこの問題が発生している場合、その理由は、railsコマンドがシェルの$PATH. おそらく、使用したいものとは異なるバージョンのRailsです。

その場合、オプションは、必要なバージョンへのパスを追跡しrailsて明示的に実行するか、 を使用するか、そのディレクトリをbundle exec実行bundle install --binstubs --deploymentして に追加することです。からのオーバーヘッドに気づいていませんが、それが心配で、すべてをバンドルにスコープしたい場合は、を使用してください(ちなみに、これは Heroku の方法です)。 binPATHbundle exec--binstubs

于 2013-03-22T02:14:32.487 に答える