不能推到Heroku:“在任何来源都找不到rake-11.1.2”

时间:2016-04-18 12:22:40

标签: ruby-on-rails heroku rake

我无法将我的项目推送到Heroku它告诉我我错过了一个宝石rake 11.1.2但正在运行gem list rake告诉我我安装了rake 11.1.2。 enter image description here

1 个答案:

答案 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。由于rakevendor/cache中没有,因此产生的错误。

OP可能通过从vendor/cache删除相关宝石或发出bundle pack命令并将宝石检入源代码控制来解决问题。第一种更常见。