Are you developing a state-of-the-art Rails application and want to push features to production as soon as they are ready just to get stuck on a deployment tool throwing random error messages at you?
Deploying a Rails application to a real server involves a seemingly infinite step process where even the smallest glitch can make your application crash randomly later or not come up at all.
Most developers do not want to bother with this and are happy to push their applications to a PaaS platform like Heroku, Ninefold or EngineYard.
Are you one of those relying on such a platform for production because
Then you miss out on important benefits for your business:
Besides, as a serious Rails developer, you are expected to know the anatomy of the deployment process and how to deploy an application manually.
But everyone says that deploying by hand is a terrible idea!
And it is. But this does not mean that you should not know how to do it. Using deployment tools like Capistrano, Mina or Vlad before knowing how to deploy an application by hand is like building a Rails application without learning Ruby first:
As long as things run smoothly, it all feels like magic. But this magic soon will turn into an undebuggable black-box when something goes wrong — and without knowing the basics of how Rails works from an operator's point of view, this will happen. Rather sooner than later.
Operations is no rocket science.
Let me tell you that even though sysadmins may want you to believe that you need special skills to do it, deploying a Rails application is actually a fairly logical step-by-step process requiring just basic Linux knowledge.
Still a topic like this needs more attention than the average "How to"-post on someone's blog. After all, your business depends on your application running reliably.
I want to help you gaining the necessary knowledge with a free ebook that I wrote.
A carefully handcrafted, DRM-free PDF guide with about 60 pages of detailed instructions on how to:
The book is written for Rails developers of any level, focusing on making each step easily comprehensible and ensuring that you truly understand the process.
Use it as a guide to develop your own provisioning and deploy routines.