Rails Application deploys now fail to build when Rake tasks cannot be detected

Change effective on 23 March 2016

When deploying a Ruby application the buildpack determines if a rake task is present in an application before attempting to run that task. Previously due to legacy behavior, if the detection task failed the build would continue even if your application depended on a $ rake assets:precompile to run. Now Rails applications that raise an error while detecting rake tasks will fail to deploy until that error is fixed. This change helps to prevent accidentally deploying an invalid version of an application that does not contain assets. Behavior is described in Heroku Ruby Support.

A common cause for Rake tasks failing to be detected, is an error in the Rakefile. The most common error is requiring a library that is in the development or test group of the Gemfile and therefore not available when deploying to production. One mitigation strategy is to rescue from a LoadError and ignore the exception in production.

  require 'minitest/autorun'
rescue LoadError => e
  raise e unless ENV['RAILS_ENV'] == "production"