capistranoを使って自分の環境で必要になった設定とかについて

メモ

capistranoとは

デプロイ自動化を目的に作られたツール。
主な機能は、

  • SSHで入ってデプロイに必要なコマンドを実行してくれる
  • デプロイ中にコケたらロールバックしてくれる
  • デプロイ実行した日時毎にディレクトリを作ってくれる

自分の環境で必要になった設定

この環境で使っているツール

上記のツールを使うには、capistranoの設定ファイルにコードとして書かないといけない。

RailsデプロイRailsレシピブックには最低限のdeploy.rbは簡潔だ。的なこと書いていてすぐできると思ってたけどすごく煩雑になった。
実行の度にエラーだったのでにこういう心境だった。

rvmを使っている場合

以下が必要となる。
これらの記述がないとシステムにインストールしているRubyを使ってしまう。

# config/deploy.rb
require 'rvm/capistrano'
set :rvm_type, :user
set :rvm_ruby_string, '1.9.3'

gemが必要。

gem 'rvm-capistrano'

RVMとCapistranoを組み合わせて使う

gitを使っている場合
set :scm, :git 
set :branch, "master"
bundelrを使っている場合

少し前は、capistranoが"bundle install"を実行してくれないので自作する必要があったが
今は以下で済ませることができる。

require "bundler/capistrano"
Vagrantを使っている場合

よくわかってない

role :web, '127.0.0.1', :port => 2200 
role :app, '127.0.0.1', :port => 2200 
role :db, '127.0.0.1', :primary => true, :port => 2200 

 ssh_options[:keys] = [ 
  "/Users/koji/.ssh/id_rsa",
  "/Users/koji/.vagrant.d/insecure_private_key"
]

Capistrano で Vagrant の仮想マシンにアクセス

sudoで実行するのか

sudoで実行するのかの設定。
今回はvagrantユーザでログインし、デプロイ作業を行いたいので:use_sudoはfalseとしている。

set :user, 'vagrant'
set :use_sudo, false 
database.ymlをコピーする

"$ cap deploy"ではdatabese.ymlを自分でコピーする必要があるので適当にコピーするようにする。

before "deploy:assets:precompile" do
  run "cp #{release_path}/config/database.yml.sample #{release_path}/config/database.yml"
end

capistrano-ext

ステージング環境と本番環境へのデプロイをクールにcapistranoで使えるようになる。
Railsアプリを本番環境とステージング環境にデプロイ〜capistrano-ext