query: tag:cap

capistranoはwebアプリケーションをデプロイするための非常に便利なツールですが、出力のログがちょっと読みにくく、どのタスクが実行されたのかが分かりにくいな、と感じていました。
そこで、
capistrano_colors
というGemを使って、capistranoの出力を色づけしてみる事にしました。
これを使うと、以下のように分かりやすい感じになります。

ss

設定方法ですが、まずはGemをインストールします。

pre>>
% sudo gem install capistrano_colors
<<--

続いて、config/deploy.rb (いわゆるレシピファイル)の中か、
~/.caprcの中で、以下の一行を追加します。

ruby>>
require 'capistrano_colors'
<<--

これでOKです。あとは、普通にcapコマンドを使えば、
色づけされた出力が得られます。

posted by genki genki on Sun 18 Jan 2009 at 02:25 with 0 comments

capistranoには、以下のコマンドを実行する事で、メンテナンスページを用意する機能があります。

pre>>
% cap deploy:web:disable
<<--

コマンドを実行すると、デプロイ先のサーバ上で、shared/system/maintenance.html が生成されます。
shared以下のディレクトリは、public/の下にシンボリックリンクが作成されるので、
結果としてpublic/system/maintenance.htmlが準備される事になります。

しかし、capistranoがやってくれるのはここまでなので、
maintenance.htmlが存在した場合にそれを表示するようにするように、
Webサーバを設定する作業は自分でやる必要があります。
mod_railsとかでその辺まで面倒みてくれる感じになっていると楽なんですけどね。

その設定については、Apacheを使っている場合は以下のような感じにすればOKです。

pre>>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/javascripts/
RewriteCond %{REQUEST_URI} !^/stylesheets/
RewriteRule ^.$ /system/maintenance.html [L]
RewriteRule ^/(images|javascripts|stylesheets)/(.
)$ /$1/$2 [L]
<<--

ちなみに、メンテナンスページを取り下げるには、以下のコマンドを実行します。

pre>>
% cap deploy:web:enable
<<--

これで、maintenance.htmlが削除されます。

See Also

posted by genki genki on Tue 23 Dec 2008 at 16:36 with 0 comments

CapistranoをMerbでDataMapperを使ってる場合に、
cap deploy:migrationsを実行した時に、rake db:migrateではなく、
rake db:autoupgradeをするようにするための設定の書き方のメモです。

具体的には、以下のようにdeploy:migrateタスクを書き換えます。

config/deploy.rb

ruby>>
namespace :deploy do
desc "Run autoupgrade"
task :migrate do
run "cd #{release_path}; rake db:autoupgrade MERB_ENV=production"
end
end
<<--

これでOKです。

posted by genki genki on Tue 2 Dec 2008 at 15:04 with 0 comments

Capistranoを使って、デプロイ時に必要なGemをインストールさせる方法を紹介します。

Rails-2.1以降、config/environment.rbで、config.gemを指定することによって、アプリケーションが依存するGemを簡単に指定することができるようになりました。
また、ここで指定したGemは、

pre>>
% sudo rake gems:install
<<--

とするだけで、インストールすることができます。

しかし、今のところ、capistranoでデプロイするときに
この設定を考慮して自動的に足りないGemをインストールしてくれたりすることはないので、ちょっと残念な感じでした。

そこで、cap deployを実行した時に、必要なGemをサーバ上でインストールさせるためのレシピを紹介します。

config/deploy.rb

rails>>
namespace :deploy do
task :restart, :roles => :app do
sudo "rake -f #{current_path}/Rakefile gems:install"
end
end
<<--

上記のように、deploy:restartのタスクで、Rakeコマンドを実行させるだけです。
簡単ですね。

posted by genki genki on Sun 7 Sep 2008 at 06:37 with 0 comments

Capistrano-2.1を使って、Gitリポジトリからデプロイする為のレシピファイルの書き方のメモです。

config/deploy.rb

ruby>>
set :application, "goodstuff"
set :scm, :git
set :repository, "git.foo.com:/path/to/#{application}.git"
set :branch, 'master'
set :deploy_via, :copy
set :deploy_to, "/mnt/app/#{application}"
set :user, "app"
(--snip--)
<<--

/path/to/goodstuff.gitがベアリポジトリだと仮定しています。
:branch:deploy_viaを指定しているところがポイントでしょうか。
後は

pre>>
% cap deploy
<<--

するだけ。

posted by genki genki on Sat 23 Aug 2008 at 02:33 with 1 comment

以前一度紹介しましたが、本来入るべきでないcompadd
が補完候補に出てしまっていたので、
xargsコマンドを使うように書き直しました。

sh>>
_cap () {
compadd cap -T | grep '^cap ' | sed 's/^cap //' | sed 's/ .*//' | xargs
}

compdef _cap cap
<<--

posted by genki genki on Wed 13 Aug 2008 at 17:45 with 0 comments

EC2onRailsを使うついでにCapistrano用Zsh補完関数を書きました。

.cap_completion.zsh

sh>>
_cap () {
cap -T | grep '^cap ' | sed 's/^cap //' | sed 's/ .*//' | sed 's/^/compadd /'
}

compdef _cap cap
<<--

posted by genki genki on Fri 25 Apr 2008 at 16:36 with 1 comment