答案 0 :(得分:2)
通过在推送到Heroku之前从代码库中删除vendor/cache
来解决此问题。这种可能令人困惑的结果源于bundle
在不同情况下表现出的行为差异。
在工作站上使用bundle
,该命令将显示this behavior:
安装宝石时,Bundler会检查供应商/缓存,然后检查系统的宝石。如果未缓存或安装gem,Bundler将尝试从您在Gemfile中声明的源安装它。
这会产生OP所期望的结果,即工作设置。
然而,Heroku上的bundle
命令正准备在Web流量负载下运行您的应用程序,这是一组完全不同的开发压力。在Heroku上,bundle
命令使用--deployment
标志执行,该标志将显示this behavior:
如果您运行了bundle pack,签入了vendor / cache目录,并且没有任何git gem,Bundler将不会在安装捆绑包时联系互联网。
Bundler正在根据vendor/cache
目录的存在做出假设,bundle pack
命令已经运行,并且预先配置了gem。由于rake
,vendor/cache
中没有,因此产生的错误。
OP可能通过从vendor/cache
删除相关宝石或发出bundle pack
命令并将宝石检入源代码控制来解决问题。第一种更常见。