Rails app crashes on Heroku

heroku, mongoid, ruby-on-rails

Solution

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

Problem

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 ```

Original source