我正按照他们的指示将一个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对于它是什么类型的应用程序有错误的想法。那张海报删除了他的应用并创建了一个新的并报告了成功。但是,删除和重新创建移植的应用程序所涉及的工作量很大。有什么方法可以解决这个问题而不是重新开始吗?
答案 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并检查它自动设置的变量,然后将它们复制(并调整)到你的应用程序