Rake でタスクに引数を渡す方法
Rakefile
task :hello, 'firstname', 'lastname'
task :hello do |t, args|
puts "Hello, #{args['firstname']} #{args['lastname']}"
end
実行
shell >rake 'hello[John,Smith]'
Rakefile
task :hello do
puts "Hello, #{ARGV.last}!"
ARGV.slice(1,ARGV.size).each{|v| task v.to_sym do; end}
end
普通だとhello と worldのタスクを実行するように解釈されるが、
上記のARGV〜で引数に指定された名前で空のタスクを定義しているため、
worldタスクが呼び出されはするものの何もしない。
注意点は以下の二つ
実行
shell> rake hello world
#=> Hello, world!