Rails 3.1アプリをHerokuCedarスタックにデプロイし、以下を実行しようとしています:
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のドキュメントとグーグルの両方が私を先に進める道に導いてくれませんでした。
何か案は?これはBambooスタックでの私の経験ではありません。
私の他のエラーは、明らかにDB移行が実行されていないことに関連しています。レーキタスクを実行できるようになるまで、私は前進し続けます。
同じ問題が発生し、問題は解決しませんでしたが、回避策を見つけました。
使用する代わりに:
heroku run rake db:migrate
次を使用できます。
heroku run:detached rake db:migrate
これにより、コマンドがバックグラウンドで実行され、出力がログに書き込まれます。終了すると、結果のログを表示できます。
理想的ではありませんが、ネットワークが不十分な場合は、穴から抜け出すことができます:)
この問題は通常、接続またはファイアウォールの問題が原因で発生します。次のコマンドを実行して、heroku run
サーバーとheroku console
サーバーへの接続をテストできます。
$ telnet rendezvous.heroku.com 5000
$ telnet s1.runtime.heroku.com 5000
(正常に接続できる場合は、を押します Ctrl+] 次に、quit
と入力して、telnetセッションを終了します。)
一部のユーザーは、ファイアウォールでこれらのホスト名とポートの組み合わせをホワイトリストに登録した後、成功しています。
Herokuは、1回限りのプロセスのトラブルシューティングセクションでこれについて言及しています: http://devcenter.heroku.com/articles/oneoff-admin-ps
起動に時間がかかるアプリケーションも、接続の問題を悪化させる可能性があります。サーバーが十分な速さで応答しない場合、アプリが起動する前にローカル接続がタイムアウトします。
これはさまざまな理由で発生するようです。私にとっては、古いバージョンのHerokuToolbeltがインストールされていることがわかりました。これは自己更新バージョンより前であり、古いバージョンのherokugemもインストールしていました。 herokuツールベルトを更新する前に、これらを削除する必要がありました。
このページは役に立ちました。最初にお読みください: https://devcenter.heroku.com/articles/heroku-command#staying-up-to-date
次のように、使用しているherokuツールベルトのバージョン(ある場合)を確認します。
$ heroku version
heroku-toolbelt/2.xx.x
バージョン2.32.0より古い場合は、更新する必要があります。応答に「heroku-toolbelt」が表示されない場合は、インストールする必要があります。
最初に、古いherokugemをインストール解除してください。 以下のコマンドを実行すると、実行可能ファイルも削除するかどうか尋ねられました。正解はYESです!特定のアプリにgemが必要な場合は、後でいつでもバンドル/インストールできます。
$ gem uninstall heroku --all
Rbenvを使用している場合は、以下を再ハッシュする必要があります。
$ rbenv rehash
古いgemをクリーンアップしたら、現在のherokuツールベルトをダウンロードしてインストールします。ターミナルを再起動すると、すべてが機能するはずです。
編集:
Rbenvパスがherokucliパスの前に設定されていないことを確認する必要がありました。そうしないと、古いheroku gemのバンドル/インストールによって、herokuコマンドが再びハイジャックされます。 〜/ .profileファイルの最後にエクスポートパス行を追加して、rbenvパスの前に追加されるようにしました。
$ vi ~/.profile
export PATH=/usr/local/heroku/bin:$PATH
ターミナルをリロードすると、これが実行され、パスが/ usr/local/herokuにないことがわかりました。
$ which heroku
/usr/local/heroku/bin/heroku
最新バージョンのherokugemをインストールしてから、これらの「herokurun」コマンドを再度実行してみてください。
私にとっては、herokuツールベルトとcliのアップグレードが機能しました。 brew
を使用しているので、次のようになります。
brew upgrade heroku-toolbelt
Herokuの問題のようです-Cedarで実行されている私のアプリケーションでコンソールに接続するときにエラーが発生します。あなたは確かにあなたがタイプしているコマンドで何も悪いことをしていません。
解決済み-3Gテザーでテストされ、応答を受信しましたが、ファイアウォールではないようです。多分プロキシ、またはISP。