Capistrano for non-rubyist

Preview:

Citation preview

CAPISTRANOfor non-Rubyists

who we are

Dimitris Tsironis

Dr. John Pagonis

Dr. John Pagonis is onto something with Missum these days. You can follow him at @JohnPagonis and @MissumApp

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

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 fixes, new features etc.

one-click deploys!(well, almost)

is a language agnostic tool for remote application administration tasks

heavily used by Rails community

it’s for sysadmins and devops guys

it fits well with deploying web-apps

provisioning of infrastructure better handled with other tools, eg. Chef, Puppet, Babushka

how it worksunder the bo$et

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 offers an interactive prompt for adhoccommands

cap shell sessions are cached and can be reused

built-in tasks

It ships with plenty of stuff, by default

ready-to-use recipes

You can find plenty on Githubhttps://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 upprepare for the ba%le

set it up

you need a Capfile 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 file 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 files

Files you need

Capfile - basic Capistrano file in root of the project

config/deploy.rb - here’s where you write custom tasks

production or staging

config/deploy/production.rb

config/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

config/deploy.rb

custom tasks example

config/deploy.rb

RAILS-specific magictasks 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 coffee

or watch some cats gifs

asset precompile

solution

Skip precompile, if it isn’t necessary

“The ability to destroy a planet is insignificant next to the power of Git”

--a tech-savvy Darth Vader

RESOURCES

Deploying with Capistrano - Github Helphttps://help.github.com/articles/deploying-with-capistrano

Capistrano Wikihttps://github.com/capistrano/capistrano/wiki

Capistrano Multistage extensionhttps://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension

Capistrano Handbook - still immaturehttps://github.com/leehambley/capistrano-handbook/blob/master/index.markdown

Capistrano Google Grouphttp://groups.google.com/group/capistrano

thank you!@JohnPagonis

@tsironakos@geemboHQ