我刚刚更新了一些宝石,但是当我推送到heroku时,旧的仍然被复制到vendor / bundler中并且我有一条消息
Using bson (1.8.2)
[...]
Would have removed bson (1.5.2)
事实上,在vendor / bundler中,旧的宝石仍然被复制。
但是,如果我创建一个新的雪松应用程序并从头开始推送到Heroku,那么旧的gem不会被复制到vendor / bundle中,并且它会按预期工作。
旧的gem版本既不是Gemfile也不是Gemfile.lock,所以我不明白heroku bundler在哪里得到这个(过时的)信息。
任何提示? 谢谢, 马可
答案 0 :(得分:3)
这是Heroku部署配置中的一个错误。它写了一个文件.bundle / config,它有一行:
BUNDLE_DRY_RUN: false
当bundler加载此全局配置文件时,它会将其转换为:dry_run => "false"
当它检查此设置时,它会检查设置[:dry_run],这是一个字符串,其值为true。
感谢@Roman在类似线程中的答案
我的解决方案是(因为我有一个自定义的buildpack)来修补它
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)
答案 1 :(得分:1)
在您的开发实例上,您可以尝试。
bundle update
查看详情Here
然后将更改提交给Git,然后将您的应用程序推送到Heroku。
如果问题只出在一个GEM上,那么你可以尝试强制你的Gemfile中的版本号。
gem 'bson', '1.8.2'
答案 2 :(得分:0)
“可能已删除...”消息可能来自Bundler意外发布的调试消息。它们可以安全地被忽略,如果尚未修复,则不应出现在下一个版本中。