I’m planning on taking the time to actually learn Ruby on Rails in-depth (I’ve previously done some very minor dabbling with it) so I can hopefully reinvent myself as a Rails developer.
The issue I run into though is that there are a fair bit of related technologies that are currently used in the Rails community, and I’m not sure if I should learn the whole shebang or focus on learning Rails with the defaults first, and then branch out into the additional stuff.
For example:
- Templates. I took a look at Haml and it looks really cool (shouldn’t be hard to learn either).
- Testing. I’ve wanted to learn test driven development for a while now, but the ‘next big thing’ in Rails-land seems to be behavior driven development with RSpec
- Javascript. I’m not sure if I should stick with RJS or use something like jQuery which seems to be converting people.
- I’ve never really used version control much. Rails seems to be using Git for most of it’s projects.
Basically I want to learn Rails ‘right’, but there seems to be a lot of different ways that I could go. Should I ignore the ‘variants’ and focus on the Core stuff until I’ve written an application or three (e.g. core, unmodified Rails; RJS w/Prototype and Scriptaculous for Ajax, regular Test::Unit for testing, ERB for templating, Git for version control), or should I try to pick up some of the variants along the way?
I’ve been a full time rails developer for over a year now and what you use really depends on what kind of team you end up on. I’ve barely used RJS, have never used RSpec, but I use git, jquery and rails every single day.
My Advice: stick with rails for at least a few months. There is plenty to learn in the framework alone. I would consider ignoring RJS as I feel like it’s going out of ‘fashion’ as developers trend towards jQuery.
Regular Test::Unit is great, although I like to add thoughtbot’s Shoulda to provide some testing macros that save a whole lot of time (consider ignoring all the Shoulda context stuff though).
Learning git feels pretty important IMHO, mainly because it’s a great and is gaining quite a bit of popularity. It also enables you to feel comfortable using github, which can be a big advantage.