A few weeks ago, I decided it was high time to get back to writing code. NewsGator’s code is based on Microsoft .net, and much of my career has been building products for Windows. Given that, I figured it was time to learn how the other half lives.
I started this adventure learning PHP (which reminded me a lot of pre-.net ASP, with some extra language constructs like classes sort of bolted on), and dabbling enough with MySQL that I could do what I wanted.
Then I decided it was time to learn Ruby and Rails. It actually took a fair amount of effort to figure out how to get started there, and I didn’t find any blog posts that really laid it out all in one place…so here is what I did.
First, I wanted to learn the language without the additional complexity of Rails on top of it. I downloaded the ruby_koans project, which essentially has a bunch of test cases, and code that you need to fix in order to continue. It was a unique way to learn, I thought, but I think I got a fair amount out of it.
After I was done with that, I thought I generally had the idea, but wanted to dive a little deeper into the language. So I read the Humble Little Ruby Book. I found the writing style a little distracting at times, but the book went beyond what I had learned with the ruby_koans, and after I was done I felt like I was ready to go. If you read this book, read the PDF version rather than the HTML version – the PDF one has much better code formatting (indents, etc.)
Ok, now that I was an expert in Ruby (ha), it was time to dive into Rails. Somehow I stumbled across the Ruby on Rails Tutorial by Michael Hartl. This was absolutely fantastic – I worked through it over a few days, and it provided a great foundation in Rails. I really can’t recommend this enough; he even covers rvm, git, rspec, heroku, and lots of other real-world topics. You can buy the book, buy a screencast version, or go through the free online version.
The beginning of that tutorial gave a little taste of using Git and Github; I realized I was going to need to learn a little more about git. To do this, I’ve been reading Pro Git by Scott Chacon, which seems like the go-to reference for git. You can read it online for free, or buy the book.
And then finally, as I’ve been working on a new project, I’ve been reading through the Rails Guides, a little at a time. They sort of pick up where the Ruby on Rails Tutorial leaves off, filling in details on specifics.
Hopefully this will be helpful for some folks…and I’m happy to finally have all these links in one place. If there are other great resources out there, please leave a comment and let me know!
Hi, very good iniciative.
I believe that a very important resource that we can use are the Railscasts screencasts, they are free and every Monday there is a new episode.
Oh, good one. I’ve only watched a few of the railscasts, but the ones I’ve seen have been great.
Thanks for writing this article, will come in handy someday when I’ll start learning ruby.
Good tip on Pro Git. Im starting to get into rails myself as a hobby and have been folllowing roughly the same path as you. The only thing I managed to build so far is my blog (see website). One of the hardest things to grok for me is the whole TDD aspect, do you have any tips on resources for that? I have been looking at the RSpec book from PragProg but can’t decide if I should finish off their agile web dev with rails first, though I feel that that book might teach some bad habits, for instance writing tests after write code.
I thought Michael Hartl’s tutorial mentioned above did a pretty good job emphasizing TDD; through most of the process he wrote tests first, then wrote code to satisfy his tests.
Beyond that, I haven’t looked for any specific resources…if you find some you like, let us know!
I’ve been reading and coding with Ruby on Rails Tutorial by Michael Hartl. It’s really good. Bur I’ve got a problemn. I’m working with Windows 7 and when I use “git” the error message is “git is not an internsl or external command”.
I understand that with Unix git works fine. How can I do the same with Windows?
Hernan, I’m not using Windows at the moment, but these links should help: