Capistrano v3を試してみる(1)
こんにちは,たにたにです.
Deployのためのツールとして有名なCapistranoですが,6月にバージョンアップしてv3になっていました.(いつの間にやら・・・)
v3になって今までプラグインを別に入れて使うのが当たり前だったcapistranoも,
Railsと分離したりMultistageを取り込んだりとずいぶん便利になったようです.
Railsにお世話にならない身としては,とてもありがたいですね.
そこで,新しくなったCapistranoがどんなものか試してみました.
* Gemsetの作成
とりあえずRVMでgemsetとつくっておき
$ mkdir capis-test && cd capis-test $ rvm rvmrc create 2.0.0@capis-test $ cd .
yesを入れてgemsetの作成を完了します."cd ."はそのままだとgemsetを読み込んでくれなかったのでその対策で.
* Bundle
Bundleの初期化をしてGemfileを作成します.
$ bundle init Writing new Gemfile to /****/capis-test/Gemfile
Gemfileにcapistrano v3とrvmをを入れます
# A sample Gemfile source "https://rubygems.org" ruby "2.0.0" # Deploy tools group :deploy do gem 'capistrano', "~>3.0.0", github: 'capistrano/capistrano' gem 'capistrano-bundler', github: "capistrano/bundler" # cap bundle:installでデプロイ先のbundle環境をインストールできる gem 'capistrano-rvm', github: "capistrano/rvm" # setup時にRVMをインストールしてくれる # gem 'capistrano-rails', github: "capistrano/rails" # Railsを使う場合は入れる end
最後にBundle installで完了
$ bundle install Fetching git://github.com/capistrano/capistrano.git ....略 Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
* Capistrano
Capistranoの初期化はcap installで行うことができるようになりました.
$ bundle exec cap install mkdir -p config/deploy create config/deploy.rb create config/deploy/staging.rb create config/deploy/production.rb mkdir -p lib/capistrano/tasks Capified
Capifiedと出たらOK.Multistageに対応していることが生成されたディレクトリからも分かりますね.
生成されたconfig/deploy.rbを見ると,:deployというnamespaceが定義されています.RailsのためのStub?がなくなったせいか,ユーザが自由に書くスタイルになったようですね.
:ptyという変数が増えたり,Logを簡単にとることができるようになったようです.
# config/deploy.rb
set :application, 'my app name'
set :repo_url, 'git@example.com:me/my_repo.git'
# ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }
# set :deploy_to, '/var/www/my_app'
# set :scm, :git
# set :format, :pretty
# set :log_level, :debug
# set :pty, true
# set :linked_files, %w{config/database.yml}
# set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
# set :default_env, { path: "/opt/ruby/bin:$PATH" }
# set :keep_releases, 5
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
# Your restart mechanism here, for example:
# execute :touch, release_path.join('tmp/restart.txt')
end
end
#### 中略 ####
after :finishing, 'deploy:cleanup'
end
ソースコードべたっと貼ると記事が長くなってよくないですね.
その(2)に続くことにします.
ディスカッション
コメント一覧
まだ、コメントがありません