I’ve gotten this question several times in several forms, so here’s a typical one, and my current answer…
I’m a mid level Rails engineer with strengths in Ruby,
Rails and TDD. I understand OOP and REST, but I am relatively week
when it comes to deploying a Rails application. Do you recommend any
resources on learning how to deploy a Rails app, grow/maintain its
deployed environment, and optimize for your application’s performance
and scaling abilities?
In general, not really. This turns out to be a gaping hole in the landscape.
Part of the problem is that there’s not one standard way to do this,
and the methods change constantly. You can find tutorials and
(sometimes) books on specific, individual tools like Chef, Ansible,
Capistrano, Docker and so on, but they’re terrible about providing an
overview. You have to already have a good idea of what the top level
looks like, which is difficult given that the tools make different
assumptions and are for different scenarios, but don’t spell that out.
You can see an example of one way to set it up in my Ruby Mad Science
open-source software, but
please don’t purchase the associated class. I’m in the process of
winding it down.
For pretty much the same reason, it turns out. Deployment is something
everybody currently does custom. It’s possible that a Rails-style
entrant (and/or Rails itself) will eventually standardize this enough
to allow one flavor of deployment instead of thousands or millions of
flavors, but we’re absolutely not there yet. Heroku is the current
Certainly look at Heroku if you haven’t already. It’s the only example
of a simple standard method of deployment, and it’s the gold standard
for “it just works.” It’s also expensive and not very configurable,
but it’s still worth looking at.
Right now, people go out and learn by doing, with highly variable results :-(