Rakeタスクにエイリアスを付ける

RubyのRakeタスクにエイリアス付けたいときってありませんか?

僕はあります。rake createなんていうタスクがあったとしたら、手癖でrake newとか打っちゃうことがあるんですよ。そういうときはalias_taskなんていう関数を作ってやって、タスク名に別のエイリアス名を割り当ててやればOK。具体的にはこんな感じです。

def alias_task(tasks)
  tasks.each do |new_name, old_name|
    task new_name, [*Rake.application[old_name].arg_names] => [old_name]
  end
end

alias_task [
  [:new, :create],
  [:dc,  :db_create]
]

このコードでは

  • createタスクにnewというエイリアス名
  • db_createタスクにdcというエイリアス名

をそれぞれ割り当てています。

参考