This is not a complete upgrade description, it covers only the gem part: Rails features extracted into gems or the introduction of new gems.

Rails 5.0 is at the horizon, this means only Rails 4.2 and Rails 4.1 gets bugfixes and security fixes. Rails 3.2 gets only fixes for severe security issues and Rails 4.0 is dead. Time to look foreward and upgrade existing applications to Rails 4.2. Best to do this step by step: 3.2 -> 4.0 -> 4.1 -> 4.2.

Since Rails 3.2 several features has been extracted into gems. If you want to use this features you have to add the corresponding gem to your Gemfile. Check your application: there are features you never have used. You should only add gems you really need.

Step extracted features into gems new gems
4.1-4.2 responders, rails-deprecated_sanitizer web-console
4.0-4.1 activesupport-json_encoder spring
3.2-4.0 activerecord-deprecated_finders, protected_attributes, activerecord-session_store, rails-observers, activeresource, actionpack-action_caching, actionpack-page_caching, actionpack-xml_parser, sprocket-rails, rails-perftest strong_parameters, turbolinks

Rails 4.1 -> 4.2

New: web-console

With the new web-console gem you get an interactive console in each error page. New Rails 4.2 applications includes this gem by default.

Extracted: responders

If you are using respond_with in combination with respond_to at class level you must add the responders gem to get the funktionality back.

Changed: rails-deprecated_sanitizer

There are changes in the HTML sanitizer which ist now based on nokogiri. Do nothing unless you experience problems with the sanitizer. To get the old behavior back, you can add the rails-deprecated_sanitizer gem. I recommend this only if you cannot easy update your code.

Rails 4.0 -> 4.1

New: spring

spring is a Rails application preloader. I’m using this gem since Rails 3.2 as a replacement for zeus or spork. It’s totally automatic. If you are on Windows or with JRuby, spring will not speed up your development.

Changed: activesupport-json_encoder

The JSON handling has changed for some cases. Unless you are using JSON intensively, you mostly did not notice the change. Otherwise consult the JSON Section in the Upgrade Guide. You can include activesupport-json_encoder to get the old behavior back.

Rails 3.2 -> 4.0

New: turbolinks

turbolinks speed up your application and introduces a lot of autocaching of your web page. You don’t need it, but you should give turbolinks a try. Read the README first, turbolinks may change the behavior of your javascript stuff. You can use turbolinks with Rails 3.2 if you want to test it before upgrading Rails.

Extracted: activerecord-deprecated_finders

Dynamic finders like :find_all_by... and hash stylish finders like Post.find(:all, conditions: { published_on: 2.weeks.ago }, limit: 5) are deprecated and extracted to gem. This gem will be maintained until Rails 5. This gem will be added as dependency automatically in Rails 4.0, but not longer in Rails 4.1. Convert your deprecated finder immediately. Include this gem only if you can’t update your code for the next time.

activerecord-deprecated_finders / Rails 4.0 Release Notes: 11.2 Deprecations

Extracted: protected_attributes
New: strong_parameters

Most likely your are using attr_accessible or attr_protected in your Rails 3.2 application. Rails 3 mass assignment protection is deprecated in Rails 4 and replaced by [strong_parameters]. You have a choice: include strong_parameters in your Rails 3.2 application and update your code before upgrade to Rails 4.0. Or include protected_attributes for the old behavior and update your code later.

protected_attributes / strong_parameters / Rails 4.0 Release Notes: 3.1 Upgrade

Extracted: activerecord-session_store

Storing sessions in SQL is time consuming, it’s better to use cookie sessions or memcache. If you need activerecord sessions, add this gem to bring back the database session storage.

activerecord-session_store / Rails 4.0 Release Notes: 3.1 Upgrade

Extracted: rails-observers

If you are using rails observers, you need this gem to bring the functionality back.

rails-observers / Rails 4.0 Release Notes: 3.1 Upgrade

Extracted: activeresource

May be you have heard of it ;-) If you have used it, you know what you are doing. Otherwise you can ignore it.

activeresource / Rails 4.0 Release Notes: 3.1 Upgrade

Extracted: actionpack-action_caching, actionpack-page_caching, actionpack-xml_parser

Rails 4 prefers russian doll caching, so action caching and page caching are extracted into separate gems. Additionaly, the actionpack xml parser too.

actionpack-action_caching / actionpack-page_caching / actionpack-xml_parser / Rails Upgrade Guide 3.2-4.0 Action Pack

Extracted: sprocket-rails

As long as bundler auto-requires dependencies, this gem will be included automatically.

Extracted: rails-perftest

I did not know something about this gem unless I write this article. If you are using rails perftest, you can read the feature by including this gem.

If you miss something or find a bug, please contact me at Twitter or Google+.