12

Github から取得したアプリを実行しようとしています。

bundle installから必要な宝石をインストールするために実行しましたGemfile。ただし、アプリを実行すると、インストールされている gem のバージョンが間違っているというエラー メッセージが表示されます。

を調べるGemfile.lockと、バージョンがインストールされている宝石よりも古いことに注意してください。(つまり、新しいバージョンの gem がインストールされており、アプリケーションには古い gem が必要です。)

Gemfile.lock ファイルに記述されているバージョンに従って、すべての gem を簡単にインストールする方法はありますか? または、そのファイルを無視する方法はありますか?

Gemfile:

   source 'http://rubygems.org'
   gem 'rails', "3.0.9"
   gem "sass"
   ..

Gemfile.lock:

 sass (3.1.1)
 ..

上記の例では、sass がインストールされていても、アプリには特別にバージョン 3.1.1 が必要です。

4

3 に答える 3

11

特定のgemバージョンがヤンクされていない限り、有効なGemfile.lockファイルがあれば、bundle installそれだけで十分です。その場合、現在も利用可能な代替のgemバージョンを探す必要があります(通常bundle update name_of_yanked_gemは十分です)。

についてはsass 3.1.1、アプリケーションがその特定のバージョンを必要とするほどではありませんが、でGemfile.lock指定されている全体的なバージョンの制約を考慮すると、が最後に生成/更新されたときに利用可能な最新バージョンである可能性がありますGemfile。あなたがリストしたように、それ自体に指定されたバージョン範囲はありませんが、他のgemは、依存関係があるsass場合、さらに制約を課す可能性があります。sass

Gemfile.lock通常の状況では、アプリケーションでまだ使用可能であることが最後にわかっていたgemバージョンを指定するため、完全に無視することはお勧めできません。

于 2012-08-31T13:32:51.937 に答える
9

これを試して ..

bundle install --deployment

上記の展開オプションを使用すると、バンドルは Gemfile.lock から読み取ります。

さらに、gem はディレクトリ vendor/bundleにインストールされ、バンドル ディレクトリはauto createdになります。

.bundleまた、 rails ルートディレクトリ直下に新しいディレクトリが作成され、config という名前のファイルがあり、その内容は次のとおりです...

BUNDLE_FROZEN: '1'
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'

上記がうまくいくことを願っています。

于 2016-03-19T11:37:09.280 に答える
7

でWebサーバーを実行していることを確認してくださいbundle execute rails server

于 2012-08-31T13:12:03.337 に答える