OK, so I've been going through the online
Ruby On Rails Tutorial by
Michael Hartl for the last few weeks in my spare time, and I'm a better programmer because of it. I've not taken any shortcuts and have learned quite a lot. The whole Model / View / Controller aspect of it came pretty easy to me since I'm a full-time ASP.NET MVC developer in my day job. Server side tags, module level variables, and helper modules are shared concepts from the ASP.NET MVC world (which I think they stole from RoR, but...). I'm really liking my new hobby.
I've learned quite a few tricks that make Ruby on Rails much more pleasing to work with than ASP.NET MVC. Namely, I like the built-in
gem utilities (package manager for Ruby on Rails), I also like the command line utilities for defining database schemas, generating test records, and auto generating oodles of code. There are so many gems that work together to support testing controllers, models, and views on the fly as you code. I always thought of Unit Testing as a good thing, but it always felt like I was forcing myself to learn / practice TDD. I just never quite "got it"; when I would write unit tests I felt good about it, but as new features come into my project it is very easy to just code my projects without writing unit tests for every little thing. With Ruby on Rails, however, it feels very natural and is almost required due to the dynamic nature of the language. RSpec makes creating tests a breeze.
I'm currently hosting a few Ruby on Rails projects on Heroku, and even doing this is brain-dead easy. I literally auto-generated a Rails project from the command line, and then used the Heroku gem to "git push" my code to Heroku. It does the rest and builds my project and deploys it for the world to see.
Just the other night, I bought a domain and plan to run my very own Ruby on Rails project... I won't give away the domain name yet, but know that I'll be making a big deal of it within the next few months. In short, I love Ruby on Rails and everything that goes with it, including Vim (with rails.vim), Git, Autotest (with Growl), Spork, TDD, and everything else). I can now say that I'm a ASP.NET MVC developer by day / Ruby on Rails developer by night.
Fun!!