Ruby rake使用-m调用一个任务两次
我正在建造一个有钻石依赖性的耙子Ruby rake使用-m调用一个任务两次,ruby,build,rake,rakefile,Ruby,Build,Rake,Rakefile,我正在建造一个有钻石依赖性的耙子 A / \ B C \ / D 耙形锉如下所示 task :default => :a task :a => [:b, :c] do |t| puts "#{t.name}" end task :b => :d do |t| puts "#{t.name}" end task :c => :d do |t| puts "#{t.name}" end task :d do |t| puts "#{t
A
/ \
B C
\ /
D
耙形锉如下所示
task :default => :a
task :a => [:b, :c] do |t|
puts "#{t.name}"
end
task :b => :d do |t|
puts "#{t.name}"
end
task :c => :d do |t|
puts "#{t.name}"
end
task :d do |t|
puts "#{t.name}"
end
问题是使用多任务选项调用了两次task:d
$ rake -m
d
d
c
b
a
task:d
是一个任务,我每次运行rake时都应该调用它,但每次构建时只调用一次
我考虑过使用filetask,但因为它实际上是一个向远程服务器发送信号的任务,所以该任务不会生成任何文件
我还尝试了下面的timestamp方法,但没有做任何更改
def (task(:d)).timestamp
if @timestamp
@timestamp
else
@timestamp = Time.now
end
end
我应该怎么做才能使它工作?既然先决条件任务是按顺序运行的,那么从C到D只有一个依赖任务,而不是从B到D有意义吗,您可以确保B和C都在D运行之前运行。因为rake是常规的ruby,所以您可以使用所有常规的ruby技术来确保D后面的东西只运行一次 事实上,我用最近的rake版本尝试了您的示例,但无法重现您的问题:
> rake --version
rake, version 10.1.0
> rake
d
b
c
a
> rake -m
d
b
c
a
Prereq任务不是按顺序运行的,但是如果您
rake-m
,则会并发运行。在这种情况下,我将跳过并发任务。