My 2 triabulle friends and me joined forces to work on a web project. Emile pushed hard and convinced both Dan and me to use cakePHP. My first choice was obviously Rails but still I was happy because it would give me the opportunity to try the PHP MVC framework for the first time. Well, I tried it and liked it. It doesn’t have all the features nor the “polished look” that rails may have, but it does the job very, very well.
One of the things that hit me was how light cakePHP could be (pssst! it’s a directory structure, nothing else). The framework’s core php files are located in a sub-folder called cake, that’s it. No installation, no generators, no command-line tools, niet. cakePHP really is a lightweight framework.
Still, Rails remains my environment of choice. First, ruby is a language i enjoy a billion times more than PHP and that in itself is a good reason to stick with the popular framework. Add to this a great variety of neat features that Rails offers like unit testing and database migrations and you have a winner. However, sometimes I find Rails a little too big for my taste. I’d love it if I just had to upload a rails application on a shared host without having to make sure that it is correctly “installed”. I’d like Rails to be like cakePHP on that front. I mean, if some host got Apache (with mod_rewrite), a mysql/postgresql server and the latest ruby interpreter installed, then I’d like to be able to run a rails app right from the get go.
Do you also have the feeling that Rails might be a little too big?
I’m not sure Rails itself is too big, it is geared afterall to the creation of full blown web applications as opposed to smaller ‘sites’ and ‘mini-apps’ but you’re very right (imho) about the deployment agonies, from my experience Rails deployment is the ‘maelstrom of hell’ we dare not speak about! There was an interesting post by Dr Nic about JRuby and Tomcat, where he laudes their accomplishments. Quote:
“Upload it … and it just works” – I still don’t think I’ve heard of a technical solution for deploying Rails apps that’s been bold enough to claim this.
Article at: (http://drnicwilliams.com/2007/03/23/drop-rails-into-tomcat-and-it-just-works-ola-bini-on-jruby-presentation/)
I dream of the day of being able to upload Rails apps to servers the way we do PHP apps – oh the joy!!
Great blog btw – loving the articles! Keep it up
Thanks Chris, glad you like the blog!
I liked how you called “maelstrom of hell” the deployment of rails applications. =) I would tend to agree.
I’m going to have a look at the article you mentioned.
Maybe you should try Camping?
I haven’t had the time or gumption to do so myself yet, but it’s basically as lightweight as you describe cakePHP, plus it’s Ruby.
Also greatly enjoying the blog here.
I haven’t encountered this “Maelstrom of Hell” with Rails deployment. Perhaps you are referring to deploying to remote hosting providers, where you have no control of the underlying technologies, rather than a self-administrated server. Nearly **all** hosting providers I’ve encountered who claim to support Rails do not have their Rails environment configured properly. They are using Apache or LigHTTPd with FastCGI (no Mongrel cluster). These are notoriously a slow and unreliable Rails environments. Apache leaks about 20 MB per day with some Rails apps and Lighty has a long-running bug in the mod_proxy plugin that causes 500 errors. The fastest and most-reliable Rails environment is using [nginx](http://nginx.net/) as your front-line reverse proxy serving static content with a Mongrel cluster serving your Rails. Granted, nginx is the new kid on the block and people are just wising up to its speed and reliability, but as time passes, Rails ISP’s will implement this setup more and more and you will see that ubiquitous “drag and drop” convenience like we see with PHP today.
Rails deployment for me with this setup couldn’t be easier. I really do “copy the files and they work” — especially when you use SQLite as your database. The database resides right in your project so everything is self-contained. To see the article I wrote documenting the setup of this environment and see the site that is running on it, please check out
[Install nginx and Mongrel Cluster on Kubuntu](http://www2.russbrooks.com:8080/2007/4/21/install-nginx-mongrel-cluster-on-kubuntu)
Hope this helps at least a few people.