who we are Dimitris Tsironis Founder at Geembo, UI designer & huge geek, who loves good design and french fries, as much as good indentation in a stylesheet. Follow him @tsironakos and @geemboHQ Dr. John Pagonis Dr. John Pagonis is onto something with Missum these days. You can follow him at @JohnPagonis and @MissumApp
WHAT’S THE PROBLEM? deploys can be a real mess mistakes could happen very easily you don’t mess with the production you’re actually delaying bug ﬁxes, new features etc.
one-click deploys! (well, almost)
is a language agnostic tool for remote applicationadministration tasksprovisioning of infrastructure better handledwith other tools, eg. Chef, Puppet, Babushkait ﬁts well with deploying web-appsheavily used by Rails communityit’s for sysadmins and devops guys
how it works under the bonnet
philosophy it runs on your computer connects to the server over ssh there is no Capistrano server or sth like that automates the tasks you would manually do with command-line
philosophy part ii uses a Ruby-based DSL for task automation there are already ready-to-use tasks cap shell oﬀers an interactive prompt for adhoc commands cap shell sessions are cached and can be reused
built-in tasks It ships with plenty of stuﬀ, by default
ready-to-use recipes You can ﬁnd plenty on Github https://github.com/nesquena/cap-recipes Ruby setup & RubyGems management Apache & Phusion Passenger Aptitude management MongoDB and much more!
custom tasks Tailor-made Capistrano tasks are easy. It’s all Ruby and Rake-like tasks, after all.
how to set it up prepare for the battle
set it up you need a Capﬁle in the root of the project then, you can execute capistrano tasks anywhere in your project’s folder, by running: cap <task name>
rails-less deploy example
capify Capify is a ﬁle generator for your project usually used with Rails project but it works with other projects in general, it can be enhanced to work with other structures
capify One command to generate the ﬁles Files you need Capﬁle - basic Capistrano ﬁle in root of the project conﬁg/deploy.rb - here’s where you write custom tasks
production or staging conﬁg/deploy/production.rb conﬁg/deploy/staging.rb
roles allow you to write capistrano tasks that only apply to certain servers then you can do something like this
configuration example conﬁg/deploy.rb
custom tasks example conﬁg/deploy.rb
RAILS-specific magic tasks for Ruby on Rails only
asset precompile PROBLEM Asset precompile can be slow. It could take several minutes that we could use to make a coﬀee or watch some cats gifs
asset precompile solution Skip precompile, if it isn’t necessary “The ability to destroy a planet is insigniﬁcant next to the power of Git” --a tech-savvy Darth Vader
rails-specific magic conﬁg/deploy.rbSource: StackOverflow of course!
RESOURCES Deploying with Capistrano - Github Help https://help.github.com/articles/deploying-with-capistrano Capistrano Wiki https://github.com/capistrano/capistrano/wiki Capistrano Multistage extension https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension Capistrano Handbook - still immature https://github.com/leehambley/capistrano-handbook/blob/master/ index.markdown Capistrano Google Group http://groups.google.com/group/capistrano