
Ruby on Rails Tutorial - ehsan_akbari
https://www.railstutorial.org/book
======
forgingahead
Highly recommended, this tutorial got many people (myself included) started on
Rails. The parent link is to the free-online version, but I do suggest folks
who have benefitted from this give back to Michael by spending on the paid
version:

[https://www.railstutorial.org/#pricing](https://www.railstutorial.org/#pricing)

No affiliation at all, just want to encourage support to a resource that has
been a net-positive to our ecosystem.

~~~
pbreit
I like that it doesn't use the CLI. I've always wondered who uses code
generators. My sense is that experienced developers do not. And that novice
developers are better off cutting and pasting. I personally loathe code
generators which is one of the reasons I've never gotten in to Rails (I know I
can do it without but seemingly all the instruction uses it).

~~~
myrridin
Been doing rails for 3 years and web dev for 8. Scaffold generators are
terrible but model generators save time on boilerplate code and give me most
of what I want. Test libraries can hook into this process as well saving
further time. Rails has plenty of drawbacks but I see some of the CLI
capabilities as a strength IMHO.

~~~
pbreit
It's the model generators that especially give me pause. I like to noodle
around with my fields before putting them in place. I love designing my models
in code.

------
rileytg
this is an classic for rails. countless entrepreneur/developers i know have
used this as their first 0 to production guide for their first real (shipped,
launched, live etc) software projects.

I say it's an excellent intro to someone with maybe some academic programming
experience to get into web app development. it gives you the kick starter
development plan you need to make a Twitter, db, grub hub, air bnb type
startup alone or with a small team.

and... he keeps it up to date! with impeccable detail!

~~~
ryanSrich
It's also amazing for non-programmer tech people like designers and marketers
who want to start building their own side projects.

~~~
crisopolis
Hopefully they know Ruby first.

~~~
hiou
I don't know. I just did a Rails backend. Feel like I couldn't have written
more than 100 lines of ruby in the whole thing. Not sure its that important.

------
startupdiscuss
I am surprised this hasn't been submitted dozens of times in the past.

For those who don't know -- and I guess there are always new people -- this is
probably the most famous Rails tutorial on the web.

It has the following impressive attributes:

1\. Free

2\. Goes through a good process

a. Backs up code to Git

b. Tests the code

c. Deploys it to Heroku

Other paid tutorials are often versions of this one.

~~~
thedudemabry
I credit Mr. Hartl's tutorial many years ago with my decision to take Rails
seriously and find a job where I got to work with it every day. I appreciated
the framework, but it often seemed "too cute" or "too magical" for my
C++-based tastes. His tutorial provided a sober introduction to pragmatic work
with the framework that continues to influence my day job to this day.

(Apologies for never actually buying the book after working through the HTML
version and loving it–I'll be sure to purchase a copy this month.)

------
ndesaulniers
One of the best beginner programming books. I was never really confident in
programming until I worked through this book. It taught me so much; proper
usage of git, persistence using a database, using a programming language that
isn't verbose to the point of being confusing, TDD, and most importantly how
to think through problems and think about the incremental design of new
features. I purchased the hard copy of this book, but I'm amazed that it's
always been free online!

------
tomcam
I defy anyone to point me to a more complete treatment of a modern development
environment. Hartl's work is ridiculously good. Almost wish I were still using
RoR...

~~~
schneems
I put out a course a few years ago after being dissatisfied with the state of
free Rails content [http://schneems.com/ut-rails/](http://schneems.com/ut-
rails/). I got amazing feedback from those who took it, but while the quality
of response was good, my SEO wasn't and so not a lot of people saw it. I never
revised the course. The exercises are all out of date (still in Rails 3.2) but
most of the videos hold up.

------
chrislgrigg
When I was trying to learn Rails, what differentiated Michael's book
everything else I came across was his eagerness to not just show _what_ to do
but also explain _why_ you're doing it. This is always my suggestion for
anyone who is trying to get into Rails.

------
hugocbp
This is the book that finally led me to abandon Law and become a developer. It
finally "clicked" after reading this book and, later, taking the Pragmatic
Programmers Rails & Ruby courses.

I even bought the complete pack with the videos after reading just to show my
appreciation to Hartl.

------
jboggan
I cannot recommend this tutorial enough. Do it three times in a row, you'll
pick up a higher level of understanding each time.

------
sotojuan
I'll always be upset that my college web development class got changed from
following this tutorial to early 2000s PHP without a database.

~~~
cubano
You know, I'll probably be bammed for saying this, but reading through this
very well-made tutorial gave me the opposite reaction.

I am glad I learned and still use PHP and not RoR.

IMHO, there are way too many black-boxes and unnecessary abstractions for such
a simple pattern as MVC, which is really nothing more then connecting HTML
views to database fields view URI routes.

I recently struggled through my first Ionic mobile app, and all the prebuilt,
"auto-magical" tooling stacks and opinionation I see in the tutorial leaves a
sour taste in my mouth ie

    
    
      gem 'rails',        '5.0.0'
      gem 'puma',         '3.4.0'
      gem 'sass-rails',   '5.0.6'
      gem 'uglifier',     '3.0.0'
      gem 'coffee-rails', '4.2.1'
      gem 'jquery-rails', '4.1.1'
      gem 'turbolinks',   '5.0.0'
      gem 'jbuilder',     '2.4.1'
    
      group :development, :test do
        gem 'sqlite3', '1.3.11'
        gem 'byebug',  '9.0.0', platform: :mri
      end
    
      group :development do
        gem 'web-console',           '3.1.1'
        gem 'listen',                '3.0.8'
        gem 'spring',                '1.7.2'
        gem 'spring-watcher-listen', '2.0.0'
      end
    
      group :production do
        gem 'pg', '0.18.4'
      end
    

All this for a "toy-app"?

Call me old-school (and I am I suppose, altho I feel I make an hell of an
effort keeping up to date), but I cut my programming teeth in C and always
respected the very limited but powerful instruction set that language
implements, and I, over the years now, respect PHP for creating very powerful
constructs (like its magical array handling) but also keeping some C-like
simplicity at its core.

Yes of course PHP has its idiosyncratic issues, but I still feel that one of
the primary reasons it's so disrespected, I'm very sorry to say, is the snob
factor thrown off by _serious motherfucking programmers_ whom seem to feel
that the simplicity and power of the language lowers the bar so low that it
allows the "unwashed" into the room or something...

To me, thats not a bug its a feature.

~~~
dham
No. With that stack you can build business and make money. Not a toy app.

That being said, if you were doing a toy app then you would take out PG. You
don't need all the dev gems they just make your life easier / faster startup.
If you come from php then you like to make your life hard, so webconsole and
byebug are out. Your doing a toy app so you don't need turbolinks,
coffescript, or Sass. It's a toy so what does it matter if a person downloads
3MB of javascript. Take out uglifier. You're not doing an API so jbuilder is
gone.

This is the new Gemfile.

    
    
      gem 'rails',        '5.0.0'
      gem 'sqlite3', '1.3.11'
    
    

People make Rails out to be some magical monster that know one knows what is
going on. It's just Ruby at the end of the day.

Here is a single file rails boot, that includes downloading the gems and
running a test.

[https://github.com/rails/rails/blob/master/guides/bug_report...](https://github.com/rails/rails/blob/master/guides/bug_report_templates/action_controller_gem.rb)

------
archildress
Love this tutorial. Michael is one of the best teachers I've encountered. It's
such a great tutorial that I hesitate to ask, but I'm not the biggest fan of
the Cloud9 IDE stuff that was added in the later versions, though. Anyone
else?

~~~
houli
The whole "setup your environment" phase is tricky for someone new especially
if you're on Windows and probably caused a lot of people to stop reading
before they even touched a line of Ruby code.

~~~
hbhakhra
I'm an experienced dev and I've abandoned many weekend projects because setup
was way too complicated. I'm currently working through the tutorial to learn
RoR and I did skip the cloud9 setup and use CLI, but I wouldn't recommended it
for beginners because for them its important to get quick wins before running
into problems.

------
Whitecollar
Beginner question, having heard rails is not a hot thing anymore and SPAs
being the new hot stuff, where do you guys draw the line between a SPA and a
server rendered web app? I can see the extreme side cases, the highly
interactive web app vs content-heavy-but-not-that interactive web app.

But for example, github doesn't have complex interactions and is not content
heavy (in the walls of text sense) but its doing just fine as a non-SPA and
users seem to like it the way it is.

Would a site like github benefit much from being a SPA instead of being server
side rendered with some JS on the top?

~~~
bdcravens
> Would a site like github benefit much from being a SPA instead of being
> server side rendered with some JS on the top?

I don't think so. Perhaps there could be some areas they could make the UI
richer (say a dynamic code viewer that doesn't require page refreshes, etc)

However, bring it back to the beginning of your comment:

> having heard rails is not a hot thing anymore and SPAs being the new hot
> stuff

Github doesn't need to be a SPA, nor do most apps. I think many decisions are
being made because it's "hot", but generally that's a very poor reason to
choose something. (Though to be fair, there's probably many Rails apps that
were built in Rails for that very reason)

SPAs carry an entirely new set of concerns. For months, I couldn't order a
very important medication online from CVS because their specialty pharmacy
site, written in Angular, was busted. I eventually figured out how to make it
work by executing Javascript directly in the inspector.

~~~
gglitch
I don't have any feelings myself at all about whether everyone should learn to
code, but I'm pretty sure I'm going to remember this anecdote next time
someone brings it up.

------
atsaloli
I just want to put a plug in for @mhartl's Softcover
([https://www.softcover.io/](https://www.softcover.io/))

From the website:

Softcover is a new publishing platform based on the production system and
business model used by the Ruby on Rails Tutorial by Michael Hartl. Using
Softcover, authors can build multi-format ebooks (HTML, EPUB, MOBI, and PDF)
from common source files, optionally bundle them with media like screencast
videos, and publish them to Softcover’s integrated sales platform with a
single command.

I converted [http://www.cfenginetutorial.org](http://www.cfenginetutorial.org)
from AsiiDoc to SoftCover -- the HTML build time plummeted from over a minute
to just a second or two. Wow! And it looks better than it ever did.

------
augustflanagan
I recently joined a company that's built on Rails. I previously was most
comfortable with Python/Django. There's lots of code to crib from, and I've
picked up the basics pretty quickly.

That said, I've been looking for Rails tutorials/resources that are geared
toward someone with decent experience with other languages/frameworks. Would
y'all recommend this book, or is this more of "learn to code with Ruby on
Rails"? If not this, any other resources that fit the bill?

~~~
prophetjohn
For someone who already knows how to program and just wants to learn Rails,
the official guides[1] are top notch and a great way to learn the framework
without having to read a whole book

[1] [http://guides.rubyonrails.org/](http://guides.rubyonrails.org/)

------
crisopolis
Glad everyone is recommending this but I also hope they recommend learning
Ruby first before Rails.

~~~
tjallingt
Since you've posted a few comments with this same sentiment a few times in
this thread; can you expand on why you feel people would need to learn Ruby
before getting started with Rails?

Also if you'd have taken a few seconds to open the link to the book and skim
through the opening paragraphs you might have read this sentence:

> There are no formal prerequisites to this book, and the Ruby on Rails
> Tutorial contains integrated tutorials not only for Rails, but also for the
> underlying Ruby language, the default Rails testing framework (minitest),
> the Unix command line, HTML, CSS, a small amount of JavaScript, and even a
> little SQL.

~~~
xentronium
I kind of agree with GP sentiment for two reasons:

1\. Nowadays I mostly advice newcomers to start with sinatra instead of rails,
because rails keeps growing in scope and the surface to cover is huge

2\. Lots of things rails does might seem magical if you don't know ruby

Don't get me wrong, rails is still bread and butter of myself and other
rubyists, but for a newcomer to start with rails is a somewhat strange/scary
thing to do.

~~~
samb1729
What does GP stand for in this context? I keep seeing it on HN and figured out
what it means, but what do the actual letters stand for?

~~~
squeaky-clean
Grandparent. As in your comment is my parent comment, and your parent comment
would be my grandparent, and so on.

~~~
samb1729
Makes sense, thanks. I've seen 'OP' (original post/poster) enough times that I
thought it was a variant on that and couldn't make sense of it.

------
stockkid
I remember reading this when I was first learning web development. Highly
recommend this book for anyone learning Ruby on Rails.

------
nicolasMLV
Great but Turbolinks 5 and Action Cable (web sockets) are missing

------
empearson
I have a career because of this tutorial, highly recommend it

------
Kutsan
Beside, have an amazing categorization.

------
ehsan_akbari
Some books on Rails.

------
lllorddino
Rails is still a thing? Wow thought everyone moved on to Go and Node.js.

------
smnplk
I am slowly transitioning from Ruby/Rails web dev to Clojure web dev and the
process is pretty sweet :) And I don't think there will be any less demand for
Rails jobs in the near future, because books/vides like railstutorial exist,
to attract the sheep ;) Just kidding, I think such books are great.

