Ruby-on-rails – Rails vs Ruby CGI


I have a boss who is convinced learning Rails is too steep a learning curve and not cost effective from a labor standpoint when straight Ruby running as a CGI app on Apache is available. He is proposing, for our rewrite, that we use straight Ruby w/ no framework rather than Rails (or Merb, Sinatra, etc.) I believe in my heart that this is a bad idea but I'm having trouble putting my case into words. Some ideas I've come up with so far:

  • Rails promotes better code reuse and better separation of concerns via MVC
  • A shop running rails will look more attractive to the qualified job seeker, since Rails looks better on his/her resume, is more fun to work with, etc.
  • (I may be wrong on this one) Rails will have better performance on Passenger because Passenger automatically pools connections to the database where as a handrolled CGI app would have to manage that itself or not at all resulting in worse performance.
  • Rails is a proven technology, at least certainly more than a handrolled CGI framework

Are there any reasons I'm missing or wrong about? Are there valid tradeoffs I'm not aware of?

Best Solution

There are occasionally good reasons for a company to roll their own framework instead of using a standard Rack-compliant framework. But "Rails has too steep a learning curve" is not one of them.

Doing it brute-force is actually more complex, rather than less. If your boss is really worried about learning curve, he should use the standard framework that has documentation and articles and screencasts and entire hosting companies dedicated to it.

Besides, Rails is dead easy to develop for. I've taught one-day workshops on Rails, and even people who have never programmed before have a working, deployed app by the end of the day. Experienced developers have an even easier time of it.

If your boss doesn't understand Rails, and rather than figure it out, he's giving you this line about Ruby over careful. Technology left him behind 15 years ago, and he's no longer qualified to make technical decisions.

He should be moved into marketing without delay.