6

我正在按照他们的说明将 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 堆栈 bundle 在哪里或提供它,因为它正是使用 bundler 来完成这项工作的。此命令在应用程序的 Procfile 中指定:

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

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

4

2 回答 2

5

Heroku 的 slug 构建过程必须在 ruby​​ 1.8.7 应用程序方面发生变化。我猜他们开始捆绑到 1.8 路径而不是 1.8 应用程序的 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 发表了一篇开发中心文章更改 Ruby 版本中断路径,其中指定了各种 ruby​​ 版本的路径。

于 2012-11-08T19:12:01.020 回答
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 并检查它自动设置的变量,然后将它们复制(并调整)到您的应用程序

于 2012-10-26T17:45:34.923 回答