I want to echo some of the comments in here: it doesn't matter what you think you will be developing with in the future, or what the framework du jour is (although some may say it is still Rails); if you want to learn how to build something, there is no better place to start than with this tutorial.
For all the "non-technical" people out there who want to see their ideas come to life, who are considering hiring contractors or paying for a class, or posting on HN or founder dating for a technical co-founder, stop. Take a step back. Forget about your idea for a week or two and immerse yourself in this tutorial and learn about what it takes to put something together. You and your software related projects will be better for it.
Wow, thanks! If you might be willing to let me use some of this for a testimonial on the site, please shoot me an email at admin at railstutorial dot org. (That goes for the other commenters on this story as well. Thanks to all of you for the awesome comments!)
I am in a completely unrelated field (SAP ERP), and I enjoy your books. I really, really love the whole "soup to nuts" emphasis of your books, even if I have no interest in being a professional RoR Developer, it gives me a perspective on how and where the industry as a whole is going that you can't get from reading a bunch of websites.
I think it does. I didn't know any Ruby before I started the tutorial, and I have long since forgotten the Ruby that I learned (because I don't use it daily). But I think a lot of the value depends on what you are looking for and how familiar you are with web development generally.
The magic of the tutorial (to me) is that it tries to package together the entire development cycle for you. It gives you the foundation for building a real usable, launchable application. Concepts like authentication and authorization are extremely important and usually not covered very well. You learn to set up heroku and push updates. You learn testing, version control etc.
For someone who has finished codeacademy, javascriptissexy, etc., I think a common problem is, "ok great ,I understand for loops, and while loops, wtf do I do now? I have this CRUD problem I want to solve that no one else is solving. How do I put it together? I want a login page. I need to input information. How do I connect all this?"
Once you finish this tutorial, you know what the process looks like for Rails. Then you can genericize your knowledge and explore Sails, Meteor, Django, Flask, Ember, MEAN, Play, etc with a foundation and an ability to start asking questions.
Yup, even relatively new to programming as well (at least, it was immense use for me). You learn a lot of other things as well, including some tooling of the modern developer (working with Git, working with a PaaS like Heroku), and a bit about databases, unit testing, HTML markup, and CSS.
Not everything will necessarily click for you as you read it, but it is a great entry point.
Absolutely. Ruby is one of the easiest programming languages to get up and running with. It also has some of the coolest metaprogramming techniques I have ever seen.
Although I'm a Python/Django developer by trade, I can't stress enough on how much book has helped me. As an undergrad college student, completely detached from industry this book showed me how to use version control, how to write tests and most importantly, despite the steep learning curve of setting up and getting stuff running, how the end result of perseverance is extremely gratifying. It made me fall in love with technology all over again. This is the book I redirect all my friends to who want to start learning programming / building stuff.
I'm really excited about this 3rd edition of the Ruby on Rails Tutorial, which is a huge update touching every chapter in the book (and adding an all-new chapter as well). I'm planning on hanging out at Hacker News for a bit post-launch, so let me know if you have any questions and I'll do my best to answer them.
Rails Tutorial (and Railsspace w/ Aurelius) are what I used to learn rails. Your teaching style and practical implementation worked where other resources didn't. Thanks so much for not only releasing this but continually revisiting it and keeping it fresh.
It's also super refreshing to see the changes made to the TDD approach in this revision. I run a small community coding programme for people new to programming and whilst we love referring to Rails Tutorial (among other things), the students often get massively disheartened when they have to face the dreaded wall of testing before they can actually produce something tangible. I completely get the merits of TDD, but I definitely favour the 'produce something interesting, get excited about it and then revisit it and understand how it works' approach for newer students.
I was at the 10th chapter of the second version of this tutorial. I turned on my pc and it seems it is gone now! Is there any other way than google cache to reach the previous tutorial, which I prefer because of the rspec?
Congrats on adding another huge helping of value to the Rails community Michael.
Once I have some free time and finish getting through "Agile Rails Development 4th Edition" I'll likely be taking another stab at your Rails tutorial. I started learning Rails with the previous version, but quickly got overwhelmed with things and needed to take a step back. I had an overwhelming sense that I was just following the examples without really understanding why I was doing something, why syntax was a certain way, etc. (particularly with unit tests). Now that I've improved my overall knowledge a bit, I'm not as intimidated by these concepts so should be able to make it further in your tutorial while internalizing more than before.
Interesting choice to move to a cloud-based IDE and I can see where it makes a lot of sense. That said, having recently started exploring the world of Vagrant and Chef (and all the frustrations therein), it would be interesting to go down that path as well to walk people through setting up their development environment. Of course I can see just as many reasons (if not more) for why that was not included in the scope of the tutorial.
I actually made a VM using Vagrant when scoping out the 3rd edition, but getting everything to work cross-platform was almost as much trouble as just installing things natively. That's why I ended up going with the cloud IDE.
By the way, I recommend reading the Rails Tutorial before Agile Web Development with Rails, which makes a good follow-on (as indicated at https://www.railstutorial.org/book/following_users#sec-guide...). But of course go with whatever works best for you.
I hear you on getting everything to work...I still can't get Chef to install the proper version of Ruby with RVM or install the gems I want. Finally I gave up on the version issue and just did it myself, and then rely on gemfiles for the gems.
Can you elaborate on why specifically you recommend your tutorial first? Are there certain foundational topics you feel are left out of Agile Web Development with Rails that are important for a novice to understand?
I feel like Agile assumes you basically know web development. It has lots of great material, but it's not structured to build up from zero, so I think the Rails Tutorial is probably a better place to start for most people.
The best part about Hartl's work is that it is "Rails Way" oriented. When I hire a junior developer or bring on an intern, this course is a prerequisite before I allow them to write any code. It provides such a strong foundation into the Rails mindset that it's an exceptional tool. It ensures that all the juniors and interns have a common experience, grounded in good habits. My Onboarding goes something like this: welcome, now do this tutorial and here's a membership to Code School for ongoing improvement. That coupled with pairing results in a great level of beginning professional competence that generally leads to higher productivity. The early time investment is completely worth it. I do prefer the Rspec focus of earlier editions, however that's just my bias and not based on anything rational. Nice work again Michael!
This book taught me an awful lot about software engineering. From learning a little bit of a language, then learning a powerful framework, then going back and mastering the language to mastering git (commit early, commit often!) to test driven development to client side JavaScript, to serverside, to SQL and relational databases. This book is packed and well worth its price (free online, to boot!).
Michael Hartl, if you're reading these comments, I attribute much of my best Software Engineering practices to you.
This book focuses on Ruby and Rails, but it is one of my favorite programming books that I always recommend.
As a generally inept arts grad that really has no business (/formal education) in developing web applications, railstutorial.org is a big reason why I can now just about pull it off. Must have tried about a dozen things, but that's what got everything clicking. Take that, past poor decisions.
Fantastic, Michael. I can't overstate how much the book has affected my professional career. I'm recommending it to anyone who wants to get started with web dev. Thank you!
You were one of the first people I told about this idea (something like five years ago), and were one of the tutorial's earliest and most enthusiastic supporters. It's pretty cool to see how it's all come together!
Loved your tutorial from when I went through the first edition a few years back. I still recommend this as a starting point for any one new to Rails and just anyone new to web development in general.
It's a great comprehensive guide to how things fit together that doesn't make much in the way of assumptions about the reader's prior knowledge.
I work full time as a Rails developer and this is pretty much mandatory reading for new developers to our group without previous Rails experience.
I would love to see you get some coverage of Docker in there. Heroku is great, but virtualization is just such a big part of web development these days; it would be a great addition to an already wonderful learning resource.
This book and tutorial taught me my foundational web development skills and was the reason I was able to launch my own start-up. I can't praise it enough.
I was a PHP and then Node.js developer for a total of two years before reading Rails Tutorial. I was self-taught all along that journey.
Had I started out with this book first, the learning curve would have been so much easier to traverse. I can't speak highly enough about it.
Using this as an into to Rails allowed me to become far more productive at what I do, and frankly I owe much of my success over the past two years to what this book instigated.
I started reading the draft chapters about a month ago - got to around chapter 6 before I became really busy with university exams. I haven't read the previous editions but I really liked this one. I'm looking forward to rereading what I've already read and finishing the tutorial when I'll have some free time again. Just wanted to say thank you for the awesome job and the hours you put into it!
I got an interview at a Rails shop a few years back, was given a 'take home' project, and found the print copy of this book at Borders. As I read the book I saw that I could get the full version online for free! Amazing.
I ended up getting the job, then I found out they used Rails 2 (not 3, which the book covered) so I had to forget a bunch of stuff for a year until we started doing Rails 3 apps. Also found out they didn't do tests so I 'wasted' a lot of time on those with the book. Rails was also a PITA to setup the first couple times, thank god for StackOverflow and Ubuntu Forums. Either way it was a great book.
I prefer dead trees and was glad to spend real money on the book. Borders, where I bought the book is closed now, so I at least hope the author(s) got a buck or two from it and it wasn't completely wasted.
This book is still a great read even if you aren't planning on Rails development. It's a great introduction to fundamentals plus it goes over Bootstrap which is immensely helpful. If you are self-taught in another language you can still benefit from this book.
I don't have much constructive to add except my utmost "thank you" for one of the most thorough and precise walkthroughs targeted at beginners. It is the reason that I dabble in programming at all. Thanks Michael.
The second edition of this book was awesome, so I'm looking forward to checking out the latest v3. The author is quite good at walking you through the code examples.
Great book! I've been going through the draft chapters the past few weeks. I organized a study group on Reddit to go through v2 of this last year and I'm going to try and organize something again soon maybe do something locally this time.
I might be missing something but is their a paper version? I hate reading technical books in digital format. If not I'll probably still get the ebook but paper would be great.
Thanks for the question. As noted [here](https://www.railstutorial.org/#print-edition), the print edition will be published by Addison-Wesley and is due out in Spring 2015. If you don't want to wait for that, I recommend the PDF on iPad, which is my preferred format for reading the book (even over print).
The MOBI version looks good on a Kindle, but I prefer the PDF on iPad because the PDF is print-quality. (This is due to limitations of the MOBI format and is not specific to the Ruby on Rails Tutorial.)
Thanks for the question. MySQL actually hasn't been the default for a while, I think back before Rails 2.0. The default database for testing and development now is SQLite; in production, the tutorial uses PostgreSQL at Heroku. I recommend eventually learning how to run Postgres locally as well, but when you're just starting out SQLite is much easier, requiring essentially zero setup.
The dude has consistently released the best Rails tutorial for free for years, I think it's permissible for him to ask for some imaginary internet currency to get exposure for the paid version that helps him pay the bills.
I appreciate your support, but minimaxir is actually right. This was news to me, and I've been a member of Hacker News for 2768 days. It's in the FAQ, not the guidelines, which is why I missed it:
Upvotes determine ranking on the front page and consequently exposure. The OP has a direct financial incentive from benefiting from this exposure, so yes, it is a problem.
If everyone asked for upvotes based on merit, the system would break down.
For most things, I'd agree but I also feel like OP has given a lot to the community and it's not like you HAVE to buy the book, it's freely available too.
Soliciting upvotes is against the rules and is the definition of a voting ring (https://news.ycombinator.com/newsfaq.html). The idea of HN is that users vote for things they find intellectually interesting, not because they or someone they like are promoting something. If we didn't have such a rule, as well as software to enforce it, HN would be overrun by gaming of the voting system. Dozens of posts try to do so every day.
That said, we routinely override the ring detector when the post is good original work, which this obviously is. But we don't do that more than once per project. The trouble here is that from an HN front page point of view, these are all effectively the same story:
Of course, to someone immersed in hard work on a big project, those are all very different milestones, each worthy of a post. But from an HN point of view, this project has appeared on the front page a lot lately. At least two of those posts got significant attention within the last couple months. That's a lot—already more than pretty much anyone else gets. So I don't see how we can justify overriding the ring detector in the present case without being unfair to everyone else to whom these rules apply. (It goes without saying that none of the above is meant to impugn the quality of the book, which I don't doubt deserves the enthusiasm of its fans.)
Edit: We restored the post because mhartl explained in an email that he didn't know the rules, and I believe him. I'll leave the above comment in the hope that it makes things clearer for everybody, or at least somebody.
For what it's worth, Daniel, as a simple reader I also considered them very different milestones. I remember reading through the announcement of the draft, and thinking I would take another look when the final version is announced, due to the level of enthusiasm shown.
I think a lot of people make a strong distinction between draft (or MVP) and launch, etc. This kind of continuity is good for every news cycle of any length, including HN's. :) People like seeing updates.
In cases such as this one where it is so helpful to so many people building a business, occasional updates are warranted. There are countless stories in here of people who have bootstrapped businesses using this very book, and mhartl is an extremely responsive and responsible person and member of the community. He answered some of my detailed questions last time around in an email, and I appreciate seeing the update about the launch on the front page now.
For all the "non-technical" people out there who want to see their ideas come to life, who are considering hiring contractors or paying for a class, or posting on HN or founder dating for a technical co-founder, stop. Take a step back. Forget about your idea for a week or two and immerse yourself in this tutorial and learn about what it takes to put something together. You and your software related projects will be better for it.