Rakefile 任务块 arg 不工作
Rakefile task block arg not working
我的 Rakefile 中有一个任务
desc "Create a new person."
task :add_person, :name do |t, args|
sh "echo My name is #{args.name}"
end
当我做的时候$ rake add_person john
我得到:
echo My name is
My name is
rake aborted!
Don't know how to......
但我应该得到:
echo My name is john
My name is john
rake aborted!
Don't know how to......
怎么回事?
这样称呼它:
rake add_person[john]
或者如果您使用的是 zsh:
rake add_person\[john\]
编辑: 对关于能够这样称呼它的评论的回应:rake add_person john
我想你有两个选择。
使用环境变量方法传递参数:
desc "Create a new person."
task :add_person do |t, args|
name = ENV.fetch('NAME')
sh "echo My name is #{name}"
end
然后这样调用:
$ rake add_person NAME=john
或者,使用 ARGV 进行 Hack(个人不推荐):
desc "Create a new person."
task :add_person do
name = ARGV.last
sh "echo My name is #{name}"
# Task does nothing
task name.to_sym do ; end
end
然后像这样使用:
$rake add_person john
我个人只是按预期使用它。
更新任务
task :add_person, [:name] => :environment do |_t, args|
puts "My name is #{args[:name]}"
end
和运行
rake add_person['john']
我的 Rakefile 中有一个任务
desc "Create a new person."
task :add_person, :name do |t, args|
sh "echo My name is #{args.name}"
end
当我做的时候$ rake add_person john
我得到:
echo My name is
My name is
rake aborted!
Don't know how to......
但我应该得到:
echo My name is john
My name is john
rake aborted!
Don't know how to......
怎么回事?
这样称呼它:
rake add_person[john]
或者如果您使用的是 zsh:
rake add_person\[john\]
编辑: 对关于能够这样称呼它的评论的回应:rake add_person john
我想你有两个选择。
使用环境变量方法传递参数:
desc "Create a new person."
task :add_person do |t, args|
name = ENV.fetch('NAME')
sh "echo My name is #{name}"
end
然后这样调用:
$ rake add_person NAME=john
或者,使用 ARGV 进行 Hack(个人不推荐):
desc "Create a new person."
task :add_person do
name = ARGV.last
sh "echo My name is #{name}"
# Task does nothing
task name.to_sym do ; end
end
然后像这样使用:
$rake add_person john
我个人只是按预期使用它。
更新任务
task :add_person, [:name] => :environment do |_t, args|
puts "My name is #{args[:name]}"
end
和运行
rake add_person['john']