I've spent the last couple of months working in Ruby on Rails, so I thought I'd share some of my experiences. If you're unaware of this increasingly popular framework, it's a well known saying to do things "the rails way" which, in a manner of speaking, is a standardised, and perhaps stringent way of completing a given task that adheres to certain rules. This is a good thing, because it ensures a few things, firstly that other programmers can understand your code, and secondly that you don't go about trying to complete a task in an undesirable way. When I first kept hearing the "do it the rails way" I personally had the tendency to fight back thinking it was a bunch of egotistical self-confessed developers pushing their opinions on others, but in hindsight, they're usually right.
Rails is an MVC framework built using Ruby. It uses the Active Record pattern for database manipulation (which basically ties relational databases up with object-oriented code allowing an individual object in memory to represent a row of a table in the database). I'm still dubious as to whether it's a solution for all cases, it seems much of its use is compared to that of simple database designs which have a single field composing the primary key. Supposedly it's better to use artificial keys anyway, but that's subject to another discussion.
What I Like About It
You can literally get websites up and running in 20 minutes with fully-fledged feature-rich sites because of RoR's scripts. Using script/generate you can do all kinds of things. If it's for simple CRUD pages you can just use script/generate scaffold to get the model, the schema, and the views up and running. It makes quite a lot of sense that common tasks can be generated from a script, what's the point in doing the same thing over and over again if you know what fields a model consists of and you want basic create, read, update, and delete operations? Of course this isn't a one-for-all solution, sometimes you have to manually create your views, but the CRUD operations can be done for you as well.
Another annoyance I've in the past is validation, and the complexities and monstrosities that creep up on developers from their over-eager attitude towards the validation of data. RoR provides a whole set of helpers that you can define in your model to ensure data is validated correctly. Validation in the model eh? There's a whole number of solutions to validation, for example service layers, and keeping everything in the controller. This is fine as well, and if you're extremely strict in what belongs to your model then you might want to move it out to your controller. Rails has the concept of "thick" models, which allows for validation in the model. I think this is okay, because it means validation doesn't have to be checked in multiple places. Everything gets validated.
It's also good to know that some major sites are now investing in RoR, for example, Amazon are supposedly now using it, which is brilliant. I'm guessing their team would've thought very carefully on whether to use it or not, so there's some level of satisfaction in that.
What I Don't Like About It
I'm a stern believer in relations being enforced at the database level. There's a few reasons for this, and the best would be that if other applications are manipulating the database, not just the web interface, then relational integrity needs to be maintained. Now whilst I do say this, there are plugins available which keep the constraint definition and enforcement somewhere else in the application and apply them dependent on the database implementation, although I think this should be something that's default and aware of whether it's available to do so or not.
Because of the high level of database abstraction newer developers literally won't need to know a statement of SQL in order to develop the entire application. This concerns me because I think relational database theory knowledge is fundamental as well as the ability to write a number of queries.
Conclusion
All in all I actually think developers should be working in RoR more-so nowadays. Yes it's a trend, but it's a trend for a reason, because it promotes high quality development for the web. Development is quicker, more understandable, and hopefully more stable than building something from scratch. As long as you know what's going on behind the scenes then I don't think there's a problem with it. Always worth giving it a try anyway, the RoR documentation is fantastic.