RailsConf is around the corner, that means a new major Rails version is also waiting to be released! In this article, I want to talk about some of the noticeable changes that are confirmed to be in the new version. I will also talk about some changes that are not yet merged but have a high chance of being merged.
No more typing rake commands
In Rails 5 all the current rake commands will be accessible via the
rails command. When you want to run a migration, you will type
rake db:migrate in Rails 4. In Rails 5 this will become
The reason for this change is that currently it's not very logical which command has to go through
rake and which command should go through
rails. When you're working with rails for a longer time it becomes second nature, but only because you remember it. For a newcomer, this is a big problem and makes learning rails confusing.
Restart your app with a rake command
You can now restart all of your apps with the command
Deprecation of assigns() and assert_template in controller tests
In Rails 5.0 the test helpers
assert_template will be deprecated. This does not mean you can't use them anymore. But you have to keep in mind that they will probably be removed in a later version of rails.
The reasoning about this deprecation is that testing for instance variables and what template is being called in a controller is a bad idea, those are internals of that controller and the controller tests should not care about what ivars are being set. The controller test should be concerned about what cookies are being set, what the HTTP code was and maybe what mutations have happened in the database.
But now you might be thinking: How can I test if the correct values are being
set? Well, probably your app will return a status code 500 when certain important ivars are not set. So when you test for correct HTTP status code, you're covered!
DHH even speaks about the possibility to remove controller test altogether and use Integration tests instead. source
Ruby 2.2.1 support only
Rails will only support Ruby 2.2.1 and up. Since it wants to be able to leverage all the speed improvements in the newer ruby versions.
They skipped version 2.2.0 since it has a segfault bug
Much much more
Rails 5 will contain much more performance boosts and other great new features. When more information is available, we will blog about them again! If you want to be kept up to date, you can follow us on Twitter or sign up for our newsletter below.