The user drkyzar asked for a follow-up on my previous post comparing Ruby on Rails and PHP/symfony. His request got me thinking about some of the cons of Ruby on Rails. As expected, some are due to the language and some are decisions of the Ruby community. Here are my initial cons of Ruby on Rails as compared to PHP/symfony:
- Ruby meta-programming in Rails, and other gems, make it hard to debug problems. You can do meta-programming in PHP but it isn’t very common and symfony follows a heavily object oriented approach. In the Ruby on Rails world and the acts_as_*** gems, it is very common.
- Ruby gems (plugins) don’t always work on the different OS platforms and are often OS-specific making it difficult to include them in a projects source code repository. As an example, the json gem version 1.1.3 doesn’t install on Windows but works fine on Mac and Linux. The json gem version 1.1.1 does work on Windows but other gems like the latest Twitter gem require 1.1.3. This isn’t fun to work through when there are a variety of software engineers running the major OS environments.
- The biggest con with the RoR platform is how long it takes to compile everything when you have a big project. You can run Rails in different environments like development and production. Development recompiles everything on each request and production compiles and caches everything on the first request. So, a large project will take 20 – 30 seconds on each request in development mode as you click around. With PHP/symfony, there is no massive recompiling resulting in almost no difference changing a file and re-requesting a webpage as compared to running in production.
These are just some of my observations after building large scale SaaS products in both Ruby on Rails and PHP/symfony.