2008-05-20
cap 2.x で task:task_missing を定義しよう!ヤァ!ヤァ!ヤァ!
deploy.rb に
namespace :httpd do
task :task_missing do |name|
run httpd_cmd + ' ' + name
end
end
とか書いて、
$ cap httpd:configtest
$ cap httpd:restart
と自動で呼び出されて欲しいよねー、とか全国 cap 2.x 使いの10人ぐらいは思ってるはず。のを簡易ハックで実装すると deploy.rb に
require 'capistrano/recipes/deploy/strategy'
self.instance_eval do
def find_and_execute_task(path, hooks={})
task = find_task(path)
if !task
ptmp = path.split(':')
task_missing_name = ptmp.pop
task_missing = ptmp.push('task_missing').join(':')
if task = find_task(task_missing)
missing_body = task.instance_variable_get :@body
task.instance_variable_set :@body, Proc.new { missing_body.call task_missing_name }
end
end
raise NoSuchTaskError, "the task `#{path}' does not exist" if !task
trigger(hooks[:before], task) if hooks[:before]
result = execute_task(task)
trigger(hooks[:after], task) if hooks[:after]
result
end
end
とか書くと、task_missing で指定したタスクに引数がタスク名で渡ってくるのでそこでよしなにする。BKBK...
起きる時間
最近は必ず朝6,7時に一度目が覚めてもう一度寝て8,9時に起きる。一度6,7時に目覚めたらそのまま起きた方がいいんかなー。