Bringing a 10-year-old Ruby on Rails app back to life

Last week we published the case study, perhaps of one of out very first projects: crclup. Crclup is a group chat. You could create a group and chat with friends or colleagues. You could easily engage in real-time conversations, or seamlessly connect through a mailing list, adding a touch of asynchrony to the mix. To put it in perspective, this project was conceived around the time where Slack was released.

It turns out that we haven't published crclup's case study for several reasons. In the first place, we don't have a Clutch review, and we like our case studies to have one. In the second place, it's been 10 years since this project was delivered so we didn't have any pictures or anything that we could show in the case study, so it would be incomplete without them. After all, we have some other case studies our potential customers can read.

If it wasn't because last week I stumbled upon the project repository, you wouldn't be able to read the case study. It was like an archeological finding, or riding a time machine. I can't enumerate how many things happened in these 10 years between one of our first projects and our present as a company. We are different people, with different mindsets. We are a different company. Nothing's the same yet everything's the same in a way. We grew a lot, we evolved.

One thing that never changed was our love for Ruby and Ruby on Rails. This is a Ruby on Rails 4.0 application running on Ruby 2.0. Ruby 2.0 reached its EOL (end of life) in 2016 and Ruby on Rails 4.0 reached its EOL in 2019.

After this archeological finding, a little fire started inside me: "I've got to run this application so we can start working on the case study". The question was how? Normally, it's hard to bring old software to life as the software world moves fairly quickly. This means it's difficult to install an old version of Ruby locally, then get the native extensions to compile with newer dependencies than the ones they were intended to compile, etc. If you've been through this you know what I mean.

So the answer to this question is, if you read the blog frequently, obvious: with Docker and docker-compose.

It was a matter of time to bring the application back to life. Dockerizing a Ruby on Rails application, at this point, is trivial. So it was just a matter of picking the right images for running an old version of Ruby and an old version of MySQL. Once this was set up there was another little service that we needed to start: faye, a publish-subscribe messaging system that we used for the real-time messaging part of the application. Remember this is Ruby on Rails 4.0 and ActionCable did not yet exist!

You may think this process took a long time but it only took around 30 minutes. It's that easy to bring a 10-year-old Ruby on Rails application back to life. It's true, I did have to fix some little things and configure some others but it wasn't the end of the world.

Need help?