2

アプリをデプロイしたばかりですが、オンラインで得られるメッセージは次のとおりです。

アプリケーション エラー アプリケーションでエラー
が発生したため、ページを表示できませんでした。しばらくしてからもう一度お試しください。

あなたがアプリケーションの所有者である場合は、詳細についてログを確認してください。」

これはログのサンプルですが、何が問題なのかわかりません。

$ heroku logs
←[36m2013-08-25T20:08:28.849427+00:00 heroku[web.1]:←[0m State changed from cras
 hed to starting
←[36m2013-08-25T20:08:34.637820+00:00 heroku[web.1]:←[0m Starting process with c
ommand `bin/rails server -p 47444 -e $RAILS_ENV`
←[36m2013-08-25T20:08:35.451207+00:00 app[web.1]:←[0m /usr/bin/env: ruby.exe: No
 such file or directory
←[36m2013-08-25T20:08:37.130015+00:00 heroku[web.1]:←[0m Process exited with sta
tus 127
←[36m2013-08-25T20:08:37.144978+00:00 heroku[web.1]:←[0m State changed from star
 ting to crashed
 ←[36m2013-08-25T20:08:44.946201+00:00 heroku[web.1]:←[0m Error R99 (Platform err
 or) -> Failed to launch the dyno within 10 seconds
←[36m2013-08-25T20:08:44.946616+00:00 heroku[web.1]:←[0m Stopping process with S
IGKILL
←[36m2013-08-25T20:18:37.449495+00:00 heroku[web.1]:←[0m State changed from cras
hed to starting
 ←[36m2013-08-25T20:18:41.670955+00:00 heroku[web.1]:←[0m Starting process with c
ommand `bin/rails server -p 24333 -e $RAILS_ENV`
←[36m2013-08-25T20:18:42.269982+00:00 app[web.1]:←[0m /usr/bin/env: ruby.exe: No
 such file or directory
←[36m2013-08-25T20:18:43.430802+00:00 heroku[web.1]:←[0m Process exited with sta
 tus 127
←[36m2013-08-25T20:18:43.443400+00:00 heroku[web.1]:←[0m State changed from star
ting to crashed
←[33m2013-08-25T20:19:48.199235+00:00 heroku[router]:←[0m at=error code=H10 desc
="App crashed" method=GET path=/favicon.ico host=radiant-lake-2999.herokuapp.com
 fwd="82.28.231.27" dyno= connect= service= status=503 bytes=

これまでに得たすべての提案を試し、それに応じてすべての変更を行った後、heroku ログに次のように表示されます。

←[36m2013-08-27T21:34:49.397195+00:00 app[web.1]:←[0m F, [2013-08-27T20:58:04.948189    #2] FATAL -- :
←[36m2013-08-27T21:34:49.397195+00:00 app[web.1]:←[0m ActionController::RoutingError        (No route matches [GET] "/"):
←[36m2013-08-27T22:36:51.045269+00:00 app[web.1]:←[0m [2013-08-27 22:36:51] ERROR     SignalException: SIGTERM
←[36m2013-08-27T22:36:51.045269+00:00 app[web.1]:←[0m   /app/vendor/ruby- 1.9.3/lib/ruby/1.9.1/webrick/server.rb:98:in `select'
←[36m2013-08-27T22:37:01.918797+00:00 heroku[web.1]:←[0m Error R12 (Exit timeout) -  >Atleastone process failed to exit within 10 seconds of SIGTERM
←[36m2013-08-27T22:37:01.918996+00:00 heroku[web.1]:←[0m Stopping remaining processes with SIGKILL
4

3 に答える 3

12

アプリケーションで 3 つのファイルの最初の行を変更する必要があります。 bin/bundle bin/rails bin/rake

変化する

#!/usr/bin/env ruby.exe

#!/usr/bin/env ruby

それがエラーです!

あなたが通常できるよりも:

heroku run rake db:migrate
于 2013-08-26T16:52:30.003 に答える
2

TL;DR

この質問は、windows heroku run rake db:migrate error "/usr/bin/env: ruby​​.exe: No such file or directory"の正確な複製ではありませんが、答えはほとんど同じです#!/usr/bin/env ruby。代わりに使用してください。

シバンは間違っている

シバンは間違っています。Heroku は、基盤となる OS として、Windows ではなく EC2 Linux インスタンスを使用します。実行してからコマンドラインheroku run bashに入力することで、これを検証できます。uname -a

Linux では、シバンに Ruby インタープリターへの完全修飾パス、またはenvへの完全修飾パスとそれに続く PATH 環境変数で検索するインタープリターのいずれかを含める必要があります。たとえば、以下は両方とも Heroku Cedar スタックで有効です。

  • #!/app/bin/ruby
  • #!/usr/bin/env ruby

一般に、後者は移植性が最も高いため、Rails アプリに最適なアプローチと考えられています。Windows は通常、ファイルの関連付けを使用し、Cygwin のような POSIX レイヤーで実行していない限り、シバン行を無視します。そのため、特定の必要がない限り、すべてのクロスプラットフォーム ソース ファイルに「env トリック」を使用する必要があります。

シバン ターゲット

Cedar スタックには、PATH に Ruby の他のコピーが多数あります。次の点を考慮してください。

$ heroku run "bash -c 'which -a ruby'"
Running `bash -c 'which -a ruby'` attached to terminal... up, run.9433
/app/bin/ruby
bin/ruby
/usr/local/bin/ruby

最初の 2 つは実際には へのシンボリック リンク../vendor/ruby-2.0.0/bin/rubyであるため、実際には 4 つの可能なシバン ターゲットがありますが/app/bin/ruby、PATH の最初のターゲットです。

生活をシンプルに。上記の長い説明は無視して、 を使用して#!/usr/bin/env rubyください。

于 2013-08-25T21:34:21.317 に答える