12

So my app runs perfectly on my local machine and I pushed it to github and heroku successfully but when I try opening the application in my browser, I get the following error:

Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

Then I try running

$ heroku logs

And I get the following output in my console:

2012-07-05T21:52:11+00:00 heroku[slugc]: Slug compilation started
2012-07-05T21:52:33+00:00 heroku[slugc]: Slug compilation failed: failed to compile Ruby/rails app
2012-07-05T21:53:33+00:00 heroku[slugc]: Slug compilation started
2012-07-05T21:53:55+00:00 heroku[slugc]: Slug compilation failed: failed to compile Ruby/rails app
2012-07-05T21:58:45+00:00 heroku[slugc]: Slug compilation started
2012-07-05T21:59:04+00:00 heroku[slugc]: Slug compilation failed: failed to compile Ruby/rails app
2012-07-05T22:00:34+00:00 heroku[slugc]: Slug compilation started
2012-07-05T22:01:21+00:00 heroku[api]: Add shared-database:5mb add-on by aayushgopaldawra@gmail.com
2012-07-05T22:01:21+00:00 heroku[api]: Release v2 created by username@gmail.com
2012-07-05T22:01:21+00:00 heroku[api]: Add RAILS_ENV, LANG, PATH, RACK_ENV, GEM_PATH config by aayushgopaldawra@gmail.com
2012-07-05T22:01:21+00:00 heroku[api]: Release v3 created by username@gmail.com
2012-07-05T22:01:23+00:00 heroku[api]: Release v4 created by username@gmail.com
2012-07-05T22:01:23+00:00 heroku[api]: Deploy 23effb5 by username@gmail.com
2012-07-05T22:01:24+00:00 heroku[slugc]: Slug compilation finished
2012-07-05T22:01:27+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -R config.ru -e production -p 4606`
2012-07-05T22:01:30+00:00 app[web.1]: bundler: command not found: thin
2012-07-05T22:01:30+00:00 app[web.1]: Install missing gem executables with `bundle install`
2012-07-05T22:01:31+00:00 heroku[web.1]: Process exited with status 127
2012-07-05T22:01:31+00:00 heroku[web.1]: State changed from starting to crashed
2012-07-05T22:01:31+00:00 heroku[web.1]: State changed from crashed to starting
2012-07-05T22:01:34+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -R config.ru -e production -p 16779`
2012-07-05T22:01:35+00:00 app[web.1]: bundler: command not found: thin
2012-07-05T22:01:35+00:00 app[web.1]: Install missing gem executables with `bundle install`
2012-07-05T22:01:36+00:00 heroku[web.1]: Process exited with status 127
2012-07-05T22:01:36+00:00 heroku[web.1]: State changed from starting to crashed
2012-07-05T22:01:37+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:38+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:49+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:49+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:50+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:51+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:51+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-07-05T22:01:51+00:00 heroku[router]: Error H10 (App crashed) -> GET glowing-robot-9319.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=

I can't figure what to make of this, since this is my first time deploying to heroku and I don't know anything about web-deployment. Any help would be greatly appreciated!

4

3 に答える 3

21

私にとっての問題は、開発セクションでGemfileにthinを追加したことですが、一度herokuが本番用に使用したかったのですが、開発セクションにgemをインストールしませんでした。すべての環境で使用できるように開発セクションから薄い宝石を移動することで、このエラーを回避することができました。

Rails アプリの場合、Gemfile はおそらく次のようになります。

source 'https://rubygems.org'

gem 'rails'
gem 'heroku'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'pg'
gem 'thin'

# more gems

とにかく、 Herokuは運用Web サーバーにシンを推奨しています。

更新 (2012-05-16): Heroku の上の Rails 3 Web サーバー リンクでunicorn が推奨されるようになりました。thin は引き続き機能しますが、 unicorn への切り替えを検討することをお勧めします。

于 2012-07-16T05:30:42.223 に答える
2

おそらく、Gemfile に gem がありません。「gem install」をローカルで実行するのではなく、アプリケーションが必要とするすべてが Gemfile で指定されていることを確認してください。確認するには、RVMをインストールし、アプリ専用の gemset を作成し、アプリ ディレクトリで「bundle install」を実行してから、アプリがローカルで実行されるかどうかを確認します。実行されない場合は、gem が欠落していることは間違いありません。

于 2012-07-06T04:07:19.003 に答える
1

Heroku は、Procfile がない場合に Thin を起動して、そうでないことを伝えようとしているようです。上記のように、Thin は Gemfile にインストールされていないため、エラーが発生します。上記のように、Thin を開発グループから外すことはうまくいきます。

Heroku で Thin ではなく Unicorn を起動したい場合は、https ://devcenter.heroku.com/articles/rails-unicorn に示されているように config/unicorn.rb と Procfile を設定します。

Unicorn の Procfile の内容は上記のリンクにリストされています。Procfile に関する詳細情報 (アプリケーションのルートにある「Procfile」というファイル) は、https ://devcenter.heroku.com/articles/procfile にあります。

于 2013-07-24T15:28:37.487 に答える