10

いくつかの gem を更新しましたが、heroku にプッシュすると、古いものがまだベンダー/バンドルにコピーされ、メッセージが表示されます

Using bson (1.8.2)
[...]
Would have removed bson (1.5.2)

実際、ベンダー/バンドラーでは、古い宝石がまだコピーされています。

ただし、新しい cedar アプリケーションを作成し、ゼロから Heroku にプッシュすると、古い gem がベンダー/バンドルにコピーされず、期待どおりに動作します。

古いバージョンの gem は Gemfile にも Gemfile.lock にも含まれていないため、heroku バンドラーがこの (古い) 情報をどこで取得しているのかわかりません。

ヒントはありますか?ありがとう、マルコ

4

3 に答える 3

3

これは、Heroku デプロイ構成のバグです。次の行を含むファイル .bundle/config を書き込みます。

BUNDLE_DRY_RUN: false

バンドラーがこのグローバル構成ファイルをロードするとき、これを次のように変換し:dry_run => "false"ます。この設定をチェックするとき、設定[:dry_run] をチェックしています。

同様のスレッドで答えてくれた@Romanに感謝します

私の解決策は(カスタムビルドパックがあるため)パッチを当てることでした

https://github.com/heroku/heroku-buildpack-ruby/blob/master/lib/language_pack/ruby.rb

ライン 408-409 から

    puts "Cleaning up the bundler cache."
    pipe "bundle clean"

    puts "Cleaning up the bundler cache."
    pipe "bundle config --delete dry_run"
    pipe "bundle clean"

bundle config --delete 構成を削除します (アンダースコアに注意してください)。デフォルトdry-runは false です。結果として

      Removing bson_ext (1.8.2)
于 2013-02-14T11:48:52.357 に答える
1

開発インスタンスで試すことができます。

bundle update

詳細はこちら

次に、変更をGitにコミットしてから、アプリケーションをHerokuにプッシュします。

問題が単一のGEMのみにある場合は、Gemfileでバージョン番号を強制してみることができます。

gem 'bson', '1.8.2'
于 2013-01-26T15:27:01.047 に答える
0

「Would had remove...」メッセージは、Bundler で誤ってリリースされたデバッグ メッセージからのものである可能性があります。これらは無視しても問題ありません。まだ修正されていない場合は、次のリリースでは表示されません。

于 2013-02-11T14:24:23.927 に答える