如何通过编程调用带参数的Rake任务?
在Rake中通过Ruby代码传递参数执行任务
如果你已经知道用 Rake::Task['my_task'].execute() 执行任务,传递参数的方式分两种,取决于你的任务定义方式:
1. 先确保任务支持接收参数
首先要让你的Rake任务定义时声明接受参数,示例如下:
task :my_task, [:arg1, :arg2] do |_task, args| puts "第一个参数:#{args[:arg1]}" puts "第二个参数:#{args[:arg2]}" end
2. 传递参数执行任务
方式一:按顺序传参数数组
按照任务定义的参数顺序,直接传递数组:
Rake::Task['my_task'].execute(['hello', 'world'])
方式二:传命名哈希参数
通过键值对指定参数,不用严格遵循定义顺序:
Rake::Task['my_task'].execute(arg1: 'hello', arg2: 'world')
额外注意事项
- 如果需要重复执行同一个任务,每次执行后必须调用
reenable方法重置任务状态,否则Rake会判定任务已完成而跳过执行:task = Rake::Task['my_task'] task.execute(arg1: '第一次执行') task.reenable task.execute(arg1: '第二次执行') - 如果任务没有定义参数,强行传递参数会触发错误,务必保证任务定义和传参逻辑匹配。
内容的提问来源于stack exchange,提问作者Antzi
相关产品推荐
相关产品推荐

