« Capistrano で簡単にメンテナンス画面表示 | メイン | Sennaとrubyで全文検索(インストール編) »

Capistrano のタスクをフックする

[capistrano] [rails] [deploy]

Capistrano のタスクはフックできます。

hoge というタスクがあれば、その前後で、before_hoge と after_hoge が呼ばれます。

それを検証されているエントリ。
http://d.hatena.ne.jp/Rommy/20061021/1161440420

そこで、恐らく一番よく使われるであろう(?)、deploy_with_migrations タスクをみてみました。

(capistrano-1.3.1/lib/capistrano/recipes/standard.rb より。)


task :deploy_with_migrations do
  update_code

  begin
    old_migrate_target = migrate_target
    set :migrate_target, :latest
    migrate
  ensure
    set :migrate_target, old_migrate_target
  end

  symlink

  restart
end

update_code
ソースをチェックアウトし、shared 関連のシンボリックリンクを張る。
migrate
migrateを実行する。
symlink
最新の release へ、current シンボリックリンクを張る。
restart
サーバーを再起動する。
例えば symlink の直後に、何かタスクを挿入したい場合は、

task :after_symlink do
    #追加したい処理
end

と、config/deploy.rb に書けばいいわけです。

こいつは便利だ。

トラックバック

このエントリーのトラックバックURL:
http://i-am.web777.net/mt/mt-tb.cgi/23

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)