Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 4 app on Heroku is 500ing, but no error message in logs

I've made a new Rails 4 beta app and deployed it to Heroku (using Ruby 2.0.0, and Unicorn via a Procfile).

It runs fine locally with foreman start, but when I visit the homepage of the deployed app, I just get the standard Heroku 500 error:

We're sorry, but something went wrong.
If you are the application owner check the logs for more information.

However, in the logs, there are no errors. I've no idea what is causing the 500.

Here is the output from my last git push heroku master:

Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 656 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)

-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using Bundler version 1.3.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment
       Using rake (10.0.4)
       Using i18n (0.6.4)
       Using minitest (4.7.3)
       Using multi_json (1.7.2)
       Using atomic (1.1.8)
       Using thread_safe (0.1.0)
       Using tzinfo (0.3.37)
       Using activesupport (4.0.0.beta1)
       Using builder (3.1.4)
       Using erubis (2.7.0)
       Using rack (1.5.2)
       Using rack-test (0.6.2)
       Using actionpack (4.0.0.beta1)
       Using mime-types (1.23)
       Using polyglot (0.3.3)
       Using treetop (1.4.12)
       Using mail (2.5.3)
       Using actionmailer (4.0.0.beta1)
       Using activemodel (4.0.0.beta1)
       Using activerecord-deprecated_finders (0.0.3)
       Using arel (4.0.0)
       Using activerecord (4.0.0.beta1)
       Using coffee-script-source (1.6.2)
       Using execjs (1.4.0)
       Using coffee-script (2.2.0)
       Using json (1.7.7)
       Using rdoc (3.12.2)
       Using thor (0.18.1)
       Using railties (4.0.0.beta1)
       Using coffee-rails (4.0.0)
       Using hike (1.2.2)
       Using jbuilder (1.0.2)
       Using jquery-rails (2.2.1)
       Using kgio (2.8.0)
       Using mysql2 (0.3.11)
       Using bundler (1.3.2)
       Using tilt (1.3.7)
       Using sprockets (2.9.3)
       Using sprockets-rails (2.0.0.rc4)
       Using rails (4.0.0.beta1)
       Using raindrops (0.11.0)
       Using sass (3.2.8)
       Using sass-rails (4.0.0.rc1)
       Using turbolinks (1.1.1)
       Using uglifier (2.0.1)
       Using unicorn (4.6.2)
       Your bundle is complete! It was installed into ./vendor/bundle
       Cleaning up the bundler cache.
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       I, [2013-04-23T22:28:44.559735 #871]  INFO -- : Writing /tmp/build_33m76p0rij8a5/public/assets/rails-d8fb6a2617998f32edf5edb354fc5326.png
       I, [2013-04-23T22:28:49.911890 #871]  INFO -- : Writing /tmp/build_33m76p0rij8a5/public/assets/application-d4a508061cd56ce9e544945495285e0c.js
       I, [2013-04-23T22:28:50.120141 #871]  INFO -- : Writing /tmp/build_33m76p0rij8a5/public/assets/application-a3b89b66a8471f3e75abb239e3b35c7d.css
       Asset precompilation completed (8.30s)
-----> Rails plugin injection
-----> Discovering process types
       Procfile declares types      -> web
       Default types for Ruby/Rails -> console, rake, worker

-----> Compiled slug size: 35.0MB
-----> Launching... done, v21
       http://blofs.herokuapp.com deployed to Heroku

To [email protected]:blofs.git
   32e51a2..37d989c  master -> master

And here are the logs from that push:

2013-04-23T22:28:06.650049+00:00 heroku[slugc]: Slug compilation started
2013-04-23T22:29:11.194613+00:00 heroku[api]: Release v21 created by [email protected]
2013-04-23T22:29:11.365908+00:00 heroku[api]: Deploy 37d989c by [email protected]
2013-04-23T22:29:11.441066+00:00 heroku[web.1]: State changed from up to starting
2013-04-23T22:29:11.932952+00:00 heroku[slugc]: Slug compilation finished
2013-04-23T22:29:12.858139+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2013-04-23T22:29:13.194707+00:00 app[web.1]: I, [2013-04-23T22:29:13.194495 #2]  INFO -- : reaped #<Process::Status: pid 5 exit 0> worker=0
2013-04-23T22:29:13.194902+00:00 app[web.1]: I, [2013-04-23T22:29:13.194747 #2]  INFO -- : master complete
2013-04-23T22:29:14.312014+00:00 heroku[web.1]: Process exited with status 0
2013-04-23T22:29:14.338943+00:00 heroku[web.1]: Starting process with command `bundle exec unicorn -p 25281 -E $RACK_ENV`
2013-04-23T22:29:15.717687+00:00 app[web.1]: I, [2013-04-23T22:29:15.717387 #2]  INFO -- : listening on addr=0.0.0.0:25281 fd=7
2013-04-23T22:29:15.717916+00:00 app[web.1]: I, [2013-04-23T22:29:15.717861 #2]  INFO -- : worker=0 spawning...
2013-04-23T22:29:15.721526+00:00 app[web.1]: I, [2013-04-23T22:29:15.721385 #2]  INFO -- : master process ready
2013-04-23T22:29:15.723623+00:00 app[web.1]: I, [2013-04-23T22:29:15.723389 #5]  INFO -- : worker=0 spawned pid=5
2013-04-23T22:29:15.723805+00:00 app[web.1]: I, [2013-04-23T22:29:15.723750 #5]  INFO -- : Refreshing Gem list
2013-04-23T22:29:16.305653+00:00 heroku[web.1]: State changed from starting to up
2013-04-23T22:29:16.891063+00:00 app[web.1]: I, [2013-04-23T22:29:16.890882 #5]  INFO -- : worker=0 ready

After that, I tried to load the homepage in my browser, and these are the only two extra lines that appeared in the logs:

2013-04-23T22:29:26.685651+00:00 heroku[router]: at=info method=GET path=/ host=blofs.herokuapp.com fwd="46.65.16.44" dyno=web.1 connect=2ms service=156ms status=500 bytes=706
2013-04-23T22:29:26.973073+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=blofs.herokuapp.com fwd="46.65.16.44" dyno=web.1 connect=1ms service=5ms status=200 bytes=0

Does anyone have any idea what the problem could be?

Other things that might be relevant:

  • I've disabled the standard Heroku Postgres addon and am using the ClearDB MySQL addon instead.
  • I've tried manually changing the DATABASE_URL environment variable from the previous value (which was still the postgres URL even after I removed the postgres addon) to the same value as the CLEARDB_DATABASE_URL var (the mysql one). This didn't seem to make any difference.
  • I have added ruby '2.0.0' to my Gemfile, and added mysql2 and unicorn gems. And I've used the config/unicorn.rb suggested at https://devcenter.heroku.com/articles/rails-unicorn
  • My Procfile only contains: web: bundle exec unicorn -p $PORT -E $RACK_ENV
  • It works fine locally with foreman start.
  • Other than the modifications described above, it's basically an out-of-the-box app created with rails new.
like image 914
callum Avatar asked Apr 23 '13 22:04

callum


People also ask

How do I see Heroku error logs?

You can view logs with the Heroku CLI, the dashboard, your logging add-on, or in your log drain. You can't view logs for apps in Shield spaces with Private Space Logging enabled. Retrieve logs from your log drain instead.

Why my Heroku app is showing application error?

"Application Error" or similar is always caused by your own application code. Routing errors will normally only surface themselves within the logs of your application. In most cases, you will be able to see the cause of the error there. To learn more about logging, please see our Logging article on DevCenter.


1 Answers

You need to add gem 'rails_12factor' to your Gemfile. It's a temporary fix from Heroku to make Rails 4+ work with their service.

See Getting Started with Rails 4.x on Heroku or Getting Started with Rails 5.x on Heroku.

like image 154
Alexander Ekdahl Avatar answered Oct 13 '22 11:10

Alexander Ekdahl