heroku运行控制台返回'错误连接到进程'

时间:2011-09-25 16:17:40

标签: ruby-on-rails heroku ruby-on-rails-3.1 rails-3.1 cedar

我已经将一个rails 3.1应用程序部署到Heroku Cedar堆栈,我正在尝试执行:

heroku run rake db:migrate

它返回:

Running console attached to terminal... 
Error connecting to process

我也尝试简单地启动控制台:

heroku run console

任何运行命令都会返回相同的错误。

Running console attached to terminal... 
Error connecting to process

查看日志,我收到错误代码:

2011-09-25T16:04:52+00:00 app[run.2]: Error R13 (Attach error) -> Failed to attach to process

当我heroku ps看到当前进程时,我可以看到我的尝试正在运行:

Process       State               Command
------------  ------------------  ------------------------------
run.2         complete for 26m    bundle exec rails console
run.3         up for 27s          bundle exec rails console
run.4         up for 3s           bundle exec rake db:create
web.1         up for 46s          bundle exec thin start -p $PORT -e..

但他们每个人都在提出异常:

2011-09-25T16:31:47+00:00 app[run.3]: Error R13 (Attach error) -> Failed to attach to process
2011-09-25T16:31:47+00:00 heroku[run.3]: Process exited
2011-09-25T16:31:48+00:00 heroku[run.3]: State changed from up to complete
2011-09-25T16:32:11+00:00 app[run.4]: Error R13 (Attach error) -> Failed to attach to process
2011-09-25T16:32:11+00:00 heroku[run.4]: Process exited
2011-09-25T16:32:12+00:00 heroku[run.4]: State changed from up to complete

服务器管理员不是我的一杯茶,因此决定使用Heroku。

Heroku docs和Google搜狗都没有让我走上一条让我继续前进的道路。

有什么想法吗?这不是我在Bamboo堆栈上的经验。

我的其他错误显然与未执行的数据库迁移有关。直到我可以执行rake任务,我才能继续前进。

7 个答案:

答案 0 :(得分:81)

我遇到了同样的问题,虽然我没有解决问题,但我找到了解决方法。

而不是使用:

  

heroku run rake db:migrate

您可以使用:

  

heroku run:detached rake db:migrate

这在后台运行命令,将输出写入日志。完成后,您可以查看结果的日志。

不理想,但当你的网络不足时,它会让你走出困境:)

答案 1 :(得分:17)

此问题通常是由连接或防火墙问题引起的。您可以通过运行以下命令来测试与heroku runheroku console服务器的连接:

$ telnet rendezvous.heroku.com 5000 
$ telnet s1.runtime.heroku.com 5000

(如果您已成功连接,请按 Ctrl +] ,然后键入quit以退出telnet会话。)

有些用户在防火墙中将这些主机名+端口组合列入白名单后取得了成功。

Heroku在一次性流程的问题排查部分提到了这一点:http://devcenter.heroku.com/articles/oneoff-admin-ps

需要很长时间才能启动的应用程序也会加剧连接问题。如果服务器响应不够快,则在应用程序启动之前,您的本地连接将超时。

答案 2 :(得分:4)

这似乎是出于不同的原因。对我来说,事实证明我安装了较旧版本的Heroku Toolbelt。它是在自我更新版本之前,我也安装了旧版本的heroku gem。在更新heroku工具带之前必须删除那些有任何影响。

此页面证明有用。先阅读: https://devcenter.heroku.com/articles/heroku-command#staying-up-to-date

找出您正在使用的heroku toolbelt版本(如果有):

$ heroku version
heroku-toolbelt/2.xx.x 

如果它早于版本2.32.0,则需要更新。如果在响应中没有看到“heroku-toolbelt”,则需要安装它。

确保首先卸载任何旧的heroku宝石。 运行以下命令问我是否要删除可执行文件。正确的答案是肯定的!如果您需要特定应用的宝石,您可以随时捆绑/安装。

$ gem uninstall heroku --all

如果您使用的是rbenv,则可能需要重新搜索:

$ rbenv rehash

清理旧宝石后,下载当前的heroku工具带并进行安装。重新启动终端后,一切都应该工作。

修改

我必须确保我的rbenv路径没有设置在heroku cli路径前面。否则任何捆绑/安装旧的Heroku gem都会再次劫持heroku命令。我在〜/ .profile文件的末尾添加了导出路径行,因此它将在任何rbenv路径之前附加。

$ vi ~/.profile
export PATH=/usr/local/heroku/bin:$PATH

重新加载终端显示这可以通过运行而路径不在/ usr / local / heroku

$ which heroku
/usr/local/heroku/bin/heroku

答案 3 :(得分:1)

尝试安装最新版本的heroku gem,然后再次运行这些“heroku run”命令。

答案 4 :(得分:0)

看起来像Heroku的问题 - 我在Cedar上运行的应用程序上连接到控制台时出错。你输入的命令肯定没有错。

答案 5 :(得分:0)

解决 - 用3G系绳测试并收到响应,似乎不是防火墙;也许代理,或ISP。

答案 6 :(得分:0)

对我来说,升级我的heroku工具带和cli工作。我使用brew所以看起来像这样:

brew upgrade heroku-toolbelt