Table of contents

Upgrade Rails to a new version

When upgrading our apps between Rails major and minor versions, follow the official Rails guides.

Rails Configs

We are trying to standardise our Rails config files. The guidelines for these are as follows:

  • If load_defaults is used, it should be top of the config
  • Config options should be alphabetised
  • Group together options that relate to the same option
    • E.g. config.assets.enabled and config.assets.prefix should be grouped together
  • Remove any default/unnecessary comments

Gotchas for upgrading to Rails 5.0

Eager loading

By default Rails 5 disables autoloading in production and uses eager load, this blog post explains further.

The effect this can have is that classes that need the autoload_paths altered - for instance at the root of lib - will no longer work in production, but will still load in development (this has already caused a production issue).

The solution is append to eager_load_paths rather than autoload_paths which will ensure the classes are loaded in both production and development. See Publishing API Example.

ActionCable and Puma configs

We don’t use these in production and they are likely to cause conflicts, so you should remove them.

Gotchas for upgrading to Rails 5.1

Schema dumper changes

The schema dumper has been refactored in Rails 5.1 so the first migration after upgrading will generate a lot of differences in db/schema.rb. Notably whitespace and using :btree index modifiers. See this commit and also this commit for details of the changes.

As part of the upgrade, regenerating the schema with rake db:migrate and including the updated db/schema.rb file will mean the next migration doesn’t generate this noise.

This page was last reviewed . It needs to be reviewed again by the page owner #govuk-2ndline.