Heroku捆绑器不删除旧gem版本
我刚刚更新了几个gem,但是当我推送到heroku时,旧的仍然被复制到vendor / bundler中并且我有一条消息
Using bson (1.8.2) [...] Would have removed bson (1.5.2)
实际上,在vendor / bundler中,旧的gem仍然被复制。
但是,如果我创建一个新的雪松应用程序并从头开始推送到Heroku,那么旧的gem不会被复制到vendor / bundle中,它会按预期工作。
旧的gem版本既不在Gemfile中也不在Gemfile.lock中,所以我不明白heroku bundler在哪里得到这个(过时的)信息。
任何提示? 谢谢,马可
这是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)
在您的开发实例上,您可以尝试。
bundle update
详情请见这里
然后将更改提交给Git,然后将您的应用程序推送到Heroku。
如果问题只出在一个GEM上,那么您可以尝试强制Gemfile中的版本号。
gem 'bson', '1.8.2'
“可能已删除…”消息可能来自Bundler意外发布的调试消息。 它们可以安全地被忽略,如果尚未修复,则不应出现在下一个版本中。
- 在heroku雪松堆栈上部署sinatra app(使用config.ru)
- git push heroku master写入失败:连接由同行重置
- NameError:未初始化的常量Mail :: Parsers :: ContentTransferEncodingParser
- 使用Gemfile中的环境变量部署到Heroku
- ActiveRecord :: StatementInvalid:PG :: ReadOnlySqlTransaction: – 即使在取消关注后,Heroku数据库仍然只读
- 如何从SQLite迁移到PostgreSQL(Rails)
- CORS问题与Rails 4,omniauth-facebook,rack-cors,Heroku
- Heroku帮助部署使用Mysql数据库的Rails应用程序
- 在Heroku上可以实现像websocket一样的实时行为吗?