heroku:bash:bundle:找不到命令

时间:2012-10-22 21:08:27

标签: heroku bundler cedar

我正按照他们的指示将一个Heroku应用程序从Aspen移植到Heroku的Cedar堆栈。

我正处于最后一次部署阶段。我收到这个错误:

    2012-10-22T11:23:53+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -p 40310 -e production`
2012-10-22T11:23:54+00:00 app[web.1]: bash: bundle: command not found

我无法看到我如何负责告诉Heroku堆栈捆绑包或提供捆绑包,因为捆绑包被它用于这项工作。此命令在app的Procfile中指定:

web: bundle exec thin start -p $PORT -e $RACK_ENV

关于stackoverflow的另一个类似问题表明,如果应用程序最初在没有Procfile的情况下被推送到Heroku,会发生这种情况,因此Heroku对于它是什么类型的应用程序有错误的想法。那张海报删除了他的应用并创建了一个新的并报告了成功。但是,删除和重新创建移植的应用程序所涉及的工作量很大。有什么方法可以解决这个问题而不是重新开始吗?

2 个答案:

答案 0 :(得分:5)

Heroku的slug构建过程必须针对ruby 1.8.7应用程序进行更改。我猜他们开始捆绑到1.8路径,而不是1.8.1应用程序的1.9.1。在我尝试推出新版本之后,我以前工作的应用程序停止了工作。

这是让它重新运作的原因:

heroku config:add PATH=bin:vendor/bundle/1.8/bin:/usr/local/bin:/usr/bin:/bin GEM_PATH=vendor/bundle/1.8

我使用与之前相同的git存储库从新创建的应用程序中获取这些路径。

编辑:事实证明,heroku发布了一个devcenter文章Changing Ruby Version Breaks Path,它指定了各种ruby版本的路径。

答案 1 :(得分:2)

我有同样的问题,我通过设置正确的heroku配置变量来解决它

$ heroku config
=== xxxx Config Vars
DATABASE_URL:                  postgres://(...)
GEM_PATH:                      vendor/bundle/ruby/1.9.1
HEROKU_POSTGRESQL_CRIMSON_URL: postgres://(...)
LANG:                          en_US.UTF-8
PATH:                          bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin
PGBACKUPS_URL:                 https://(...)
RACK_ENV:                      production
RAILS_ENV:                     production

你可以创建一个空的rails应用程序,将其推送到heroku并检查它自动设置的变量,然后将它们复制(并调整)到你的应用程序