我已经将一个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任务,我才能继续前进。
答案 0 :(得分:81)
我遇到了同样的问题,虽然我没有解决问题,但我找到了解决方法。
而不是使用:
heroku run rake db:migrate
您可以使用:
heroku run:detached rake db:migrate
这在后台运行命令,将输出写入日志。完成后,您可以查看结果的日志。
不理想,但当你的网络不足时,它会让你走出困境:)
答案 1 :(得分:17)
此问题通常是由连接或防火墙问题引起的。您可以通过运行以下命令来测试与heroku run
和heroku 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