Зачем вам нужен псевдоним? Вы можете ввести новую задачу без кода, но с предварительным условием для оригинальной задачи.
namespace :db do
task :table do
puts "table"
end
#kind of alias
task :t => :table
end
Это можно комбинировать с параметрами:
require 'rake'
desc 'My original task'
task :original_task, [:par1, :par2] do |t, args|
puts "#{t}: #{args.inspect}"
end
#Alias task.
#Parameters are send to prerequisites, if the keys are identic.
task :alias_task, [:par1, :par2] => :original_task
Чтобы избежать поиска имен параметров, вы можете прочитать параметры с помощью arg_names
:
#You can get the parameters of the original
task :alias_task2, *Rake.application[:original_task].arg_names, :needs => :original_task
Объедините его с define_alias_task
-методом:
def define_alias_task(alias_task, original)
desc "Alias #{original}"
task alias_task, *Rake.application[original].arg_names, :needs => original
end
define_alias_task(:alias_task3, :original_task)
Протестировано с ruby 1.9.1 и rake-0.8.7.
Хм, ну, я вижу, это более или менее точно такое же решение, которое RyanTM уже опубликовал несколько часов назад.