Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails app crashes on Heroku

I've Ruby 2 + Rails 4 + Mongoid 4 app that works perfectly on Development. But when I push to Heroku, the app crashes. I've tried analyzing Heroku logs, but couldn't solve the problem. I even tried disabling a gems that I thought could be the cause, but it was no use.

A couple of other gems I'm using are android_market_api, devise and s3_direct_upload. Please Help!

2013-12-06T12:31:34+00:00 heroku[slug-compiler]: Slug compilation finished
2013-12-06T12:31:35.094147+00:00 heroku[web.1]: State changed from crashed to starting
2013-12-06T12:31:40.754686+00:00 heroku[web.1]: Starting process with command `bundle exec unicorn -p 3309 -c ./config/unicorn.rb`
2013-12-06T12:31:46.061981+00:00 app[web.1]: I, [2013-12-06T12:31:46.061146 #2]  INFO -- : Refreshing Gem list
2013-12-06T12:31:50.812324+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/optionable-0.2.0/lib/optionable.rb:32:in `block in validate_strict': :skip_version_check is an unknown option. Valid options are: :write, :read, :database, :max_retries, :pool_size, :retry_interval, :refresh_interval, :down_interval, :ssl, :timeout, :instrumenter. (Optionable::Unknown)
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/optionable-0.2.0/lib/optionable.rb:27:in `each_pair'
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/optionable-0.2.0/lib/optionable.rb:27:in `validate_strict'
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/moped-2.0.0.beta4/lib/moped/session.rb:255:in `initialize'
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bundler/gems/mongoid-f8b439dd9a59/lib/mongoid/sessions/factory.rb:66:in `new'
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bundler/gems/mongoid-f8b439dd9a59/lib/mongoid/sessions/factory.rb:66:in `create_session'
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bundler/gems/mongoid-f8b439dd9a59/lib/mongoid/sessions/factory.rb:43:in `default'
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bundler/gems/mongoid-f8b439dd9a59/lib/mongoid/sessions.rb:37:in `default'
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bundler/gems/mongoid-f8b439dd9a59/lib/mongoid.rb:62:in `default_session'
2013-12-06T12:31:50.812324+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bundler/gems/mongoid-f8b439dd9a59/lib/mongoid/railtie.rb:117:in `block in <class:Railtie>'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/lazy_load_hooks.rb:36:in `call'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/lazy_load_hooks.rb:44:in `each'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application/finisher.rb:62:in `block in <module:Finisher>'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/initializable.rb:30:in `instance_exec'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/initializable.rb:30:in `run'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/initializable.rb:55:in `block in run_initializers'
2013-12-06T12:31:50.812508+00:00 app[web.1]:    from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/tsort.rb:150:in `block in tsort_each'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/tsort.rb:219:in `each_strongly_connected_component_from'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/tsort.rb:182:in `block in each_strongly_connected_component'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/tsort.rb:180:in `each'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/tsort.rb:180:in `each_strongly_connected_component'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/tsort.rb:148:in `tsort_each'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/initializable.rb:54:in `run_initializers'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application.rb:215:in `initialize!'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/railtie/configurable.rb:30:in `method_missing'
2013-12-06T12:31:50.812798+00:00 app[web.1]:    from /app/config/environment.rb:5:in `<top (required)>'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from config.ru:4:in `require'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from config.ru:4:in `block in <main>'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from config.ru:1:in `new'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from config.ru:1:in `<main>'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn.rb:48:in `eval'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn.rb:48:in `block in builder'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn/http_server.rb:750:in `call'
2013-12-06T12:31:50.813214+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn/http_server.rb:750:in `build_app!'
2013-12-06T12:31:50.813391+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn/http_server.rb:145:in `start'
2013-12-06T12:31:50.813391+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/bin/unicorn:126:in `<top (required)>'
2013-12-06T12:31:50.813391+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bin/unicorn:23:in `load'
2013-12-06T12:31:50.813391+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bin/unicorn:23:in `<main>'
2013-12-06T12:31:52.499941+00:00 heroku[web.1]: Process exited with status 1
2013-12-06T12:31:52.522399+00:00 heroku[web.1]: State changed from starting to crashed
like image 523
Sheharyar Avatar asked Dec 06 '13 12:12

Sheharyar


People also ask

Why do Heroku apps keep crashing?

If your Procfile is pointing to the wrong server file. e.g If your server is in server. js and your Procfile points to app. js this would definitely crash your app and Heroku would greet you with the H10-App crashed error code message.

What is Application Error in Heroku?

"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. To track this kind of issue down you should look at your logs: $ heroku logs --tail --app your_app_name.


2 Answers

As per Heroku's recommendation for MongoHQ configuration file mongoid.yml shall include the following options:

skip_version_check: true
safe: true

Both of these options were removed from mongoid 4 gem i.e safe mode is now default. The gem is not final yet but you can check the CHANGELOG. So, to deploy an application on Heroku with Rails 4 and mongoid 4 gem comment out the options, like below:

staging:
  sessions:
    default:
      uri: <%= ENV['MONGOHQ_URL'] %>
      options:
        # skip_version_check: true
        # safe: true
like image 113
Vadym Tyemirov Avatar answered Sep 21 '22 13:09

Vadym Tyemirov


Okay, it seems that the problem was due to me using Mongoid 4 from it's Github Master. And since I can't use the mongoid gem with Rails 4.0.0, I had to downgrade to Ruby 1.9.3 and Rails 3.2.3.

Anyways, here's my new Gemfile if you want to see:

source 'https://rubygems.org'

ruby '1.9.3'
gem 'rails', '3.2.3'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier',     '>= 1.0.3'
end

group :production do
    gem 'unicorn'
    gem 'rails_12factor'
end

gem 'jquery-rails'
gem 'therubyracer'
gem 'turbolinks'
gem 'execjs'

gem 'mongoid'
gem 'devise'

gem 'aws-sdk'
gem 's3_direct_upload'
like image 36
Sheharyar Avatar answered Sep 19 '22 13:09

Sheharyar