10 ruby-on-rails heroku ruby-on-rails-3
我刚刚更新了几个宝石,但是当我推送到heroku时,旧的仍然被复制到vendor/bundler中并且我有一条消息
Using bson (1.8.2)
[...]
Would have removed bson (1.5.2)
Run Code Online (Sandbox Code Playgroud)
事实上,在vendor/bundler中,旧的宝石仍然被复制.
但是,如果我创建一个新的雪松应用程序并从头开始推送到Heroku,那么旧的gem不会被复制到vendor/bundle中,它会按预期工作.
旧的gem版本既不是Gemfile也不是Gemfile.lock,所以我不明白heroku bundler在哪里得到这个(过时的)信息.
任何提示?谢谢,马可
小智 3
这是 Heroku 部署配置中的一个错误。它写入一个文件 .bundle/config,其中包含一行:
BUNDLE_DRY_RUN: false
Run Code Online (Sandbox Code Playgroud)
当bundler加载这个全局配置文件时,它会将其转换为:dry_run => "false"当它检查此设置时,它会检查settings[:dry_run],它是一个字符串,其计算结果为true。
感谢@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"
Run Code Online (Sandbox Code Playgroud)
到
puts "Cleaning up the bundler cache."
pipe "bundle config --delete dry_run"
pipe "bundle clean"
Run Code Online (Sandbox Code Playgroud)
Bundle config --delete 删除配置(注意下划线),默认dry-run为 false。作为结果
Removing bson_ext (1.8.2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1854 次 |
| 最近记录: |