我正在创建一个rakefile来自动执行某些任务。我有一个非常基本的rake任务设置,我想打电话给:run
:
desc "Run instances in the runs directory"
task :run, [:filter] do |t, args|
args.with_defaults(:filter => "*")
runs = Dir["runs/"+args.filter]
puts "Running " + runs.length.to_s + " instances..."
for run_path in runs
run(run_path)
end
end
非常简单,对吧!?
rake run
,并为所有路径调用run函数。rake run["*"]
会得到与预期相同的结果。rake run["nothing"]
没有运行,正如预期的那样(我没有名为“nothing”的文件)。它会打印Running 0 instances...
rake run["*real-file-name*"]
什么都不做!即使文件名应该匹配,它甚至不会命中puts
语句。rake run["TEST"]
什么都不做!它也不会像它应该那样打印Running 0 instances...
(比如“没有”,“TEST”不存在),但它没有点击puts语句。奇怪的是,rake run["TE"]
和rake run["ST"]
都有效。对于不起作用的情况,添加跟踪标志(-t
)会给出以下输出:
** Invoke runs (first_time, not_needed)
对于有效的案例,我得到:
** Invoke run (first_time)
** Execute run
请注意,无效的案例正在调用runs
。复数。即使我将其指定为run
。到底发生了什么事?
更新 我注意到当我在某些目录中运行rakefile而不是其他目录时会发生这种情况。
使用: