capistranoを使って自分の環境で必要になった設定とかについて
メモ
capistranoとは
デプロイ自動化を目的に作られたツール。
主な機能は、
自分の環境で必要になった設定
この環境で使っているツール
- rvm
- git
- bundler
- vagrant
上記のツールを使うには、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'
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" ]
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