In my When Rails 3 is due post, I note all the dates where the Rails versions have been released. Since it’s posting, have updated my prediction for a release candidate of Rails 3 to be RailsConf. It all makes logical sense that at Rails’ biggest event they would do this. But can we, as a community, get it polished before then? I hope so!

This post is not about Rails 3, however.

It’s about the release process of the 2.3.x versions of Rails, specifically the process behind the latest four releases for this particular branch. The latest version, as of this writing is 2.3.7 and is unusable. 2.3.8-pre1 is out, and I suggest trying your applications on that and seeing if anything breaks. As a recap: 2.3.5 was released in November of last year, 2.3.6 this weekend just gone,2.3.7 yesterday and 2.3.8.pre1 shortly thereafter.

Let’s begin with what pre-releases are for: they are for people to test them to ensure that the final release is “smooth”. If you want to contribute to Rails: spend some time from your week ensuring your application runs on the latest version of Rails and report any problems. It’s not hard to create a branch and do this. If you are one to ignore pre-releases, then you are not one who should be complaining when things break in the final version of your application. In almost every case, your application will work. You may get the “off-suit draw” and something breaks. Report your problem.

A problem occurs when patch releases are made without any pre-releases at all.

2.3.6 was released without a pre-release. Whilst this is may be perceived as a catastrofuck for some people, it was a long time due. The prior release, 2.3.5, was released almost dead-on six months ago. Six months between releases, in the Rails world, is a long time. Things have been progressing rapidly, and a lot of people will benefit from the changes introduced by these new versions, including support for rack and thin 1.1.0. Yes, now you’ll be able to run your Rails app by using Thin.

However, 2.3.6 broke HAML which Nathan Weizenbaum tweeted about. He later said he had worked around it and contributed back to Rails in these three commits. Jeremy Kemper (bitsweat) then thought that there should be a 2.3.7 release.

Unfortunately this first commit broke Rails view helpers – such as form_tag – for those who didn’t have the rails-xss plugin installed. Jeremy missed this, and I spoke with him earlier and from what I could determine he missed the bug because he had rails-xss installed. When people upgraded to 2.3.7, there was an outcry started. A few people announced this issue, and therefore 2.3.7 was broken.

Whilst Rails is pretty exceptionally tested, it’s not 100%-watertight. Would this have happened if there was a pre-release? Yes and no.

On the yes side of the fence, people generally view pre-releases as “potentially unstable” and won’t upgrade their application, therefore they won’t upgrade. I implore you: upgrade your application locally to these new versions and run your tests. You do have tests, don’t you? Then if it breaks: report your problem. Patches very, very, very welcome.

On the no side, there is that handful of people who do test new releases when they come out. Therefore, this issue may have been raised if there was a pre-release. We can’t know for sure.

2.3.8 was released a couple of hours ago and Jeremy has apologised for the rushed releases and promised to follow the “same methodical drumbeat” for every release, regardless if it’s major, minor or patch. He is an absolute legend for working on this issue pretty consistently since the weekend and for getting a push out as quickly as possible.

With this release, now we’ve got an up-to-date stable 2.3.

Ladies and gentlemen, upgrade your apps!