Let’s begin by establishing what makes deploying updates for web applications challenging.
A deployment can be thought of as a form of cache invalidation, something that is commonly labeled one of the two hardest problems in Computer Science.
This repeats as needed until the patch applies cleanly.
Once that is done some testers are asked to give it all a try to make sure the new stuff is working and other old stuff has not been broken (how long you spend on this depends on the scope and severity of the changes and your level of paranoia).
When updating very old versions head should be used and can be followed by stable.
$ rvm get branch shoes # shoes branch from wayneeseguin rvm repository $ rvm get branch mpapis/ # master branch from mpapis rvm repository $ rvm get branch mpapis/shoes # shoes branch from mpapis rvm repository will remove the gems rvm, bundler and rubygems-bundler from global.gems, will add hirb to global gems and will add rails and haml to
Perhaps, an even more revealing parallel to deployments is database transactions.
It's important to use head version before reporting errors as those could be already fixed.
I’d grown tired of using a variety of ad hoc utilities ranging from rsync to Capistrano to manually running Git commands on the server.
I wanted one tool to rule them all, so I embarked on a quest to find it.
So how closely should the test server mimic the production box and is there any known method of easily deploying the same changes to the production box once they've been tested? We then apply the patch as we would to the production server by running the main control script.
I really would like to have a foolproof method of testing and applying changes to the production website and any advice with regard to this is much appreciated. If there are errors applying the changes, the VM is rolled-back to the snapshot (which takes a matter of at most a few tens of seconds) so the patch can be updated and tried again.
Well, we have a well-developed application built with our laptop, but we want it to be seen by the entire world.