1. ホーム
  2. ruby-on-rails

[解決済み] Bundlerです。Gemfile を変更した後、デプロイメントモードでインストールしようとしています。

2023-03-03 21:36:19

質問

bundlerとcapistranoを一緒に使おうとしているのですが、かなり初心者です。デプロイしようとすると、メッセージが表示されます。

Gemfile を変更した後、デプロイメントモードでインストールしようとしています。他の場所で `bundle install' を実行し、更新された Gemfile.lock をバージョンコントロールに追加してください。

で読んだので、文句を言っているシステムを満足させる方法がわからないし、文句が出てくる理由もわからない。 ドキュメント :

Gemfile.lock が存在し、Gemfile(5) を更新している場合。 を更新した場合、bundler は Gemfile.lock にある依存関係を使用します。 を使用しますが、更新した gem の依存関係を再解決します。 の依存関係を再解決します。このアップデートプロセスについての詳細は プロセスの詳細については、「CONSERVATIVE UPDATING」を参照してください。

私は、Bundlerが私のGemfileが期待したものでないという事実を処理することができるという意味だと解釈しています。何か手助けはありますか?

スペック Ruby 1.9.3, Rails 3.2.3, Capistrano 2.12.0, Bundler 1.1.4, Windows 7, Posix マシンにデプロイしています。

編集してください。 私のGemfileには、以下のようなロジックブロックがあります。

unless RbConfig::CONFIG['host_os'] === 'mingw32'
  # gem 'a' ...
end

どのように解決するのですか?

に関して表示されるエラーメッセージは Gemfile.lock に関して表示されるエラーメッセージは、あなたの GemfileGemfile.lock が互いに一致しません。を最後に実行したときからGemfileの何かを変更したように聞こえます。 bundle install (または update ). あなたが bundle install を実行すると、Gemfileに加えた変更でGemfile.lockが更新されます。

を実行していることを確認してください。 bundle install をローカルで実行し、新しく更新された Gemfile.lock にチェックインしてください。その後、デプロイを試してみてください。

Edit : コメントで認識されているように、Gemfile の条件により、あるプラットフォームでは有効な Gemfile.lock が、別のプラットフォームでは無効になっていました。を提供することで :プラットフォーム フラグを提供することで、非対称性を解決できるはずです。