我已经编译在两个方面项目Rake文件,根据全局变量$build_type
,它可以是:debug
或:release
(结果走在不同的目录):
task :build => [:some_other_tasks] do
end
Run Code Online (Sandbox Code Playgroud)
我希望创建一个任务,依次编译项目的两个配置,如下所示:
task :build_all do
[ :debug, :release ].each do |t|
$build_type = t
# call task :build with all the tasks it depends on (?)
end
end
Run Code Online (Sandbox Code Playgroud)
有没有办法将任务称为方法?或者我怎样才能达到类似的效果呢?
kch*_*kch 625
task :build => [:some_other_tasks] do
build
end
task :build_all do
[:debug, :release].each { |t| build t }
end
def build(type = :debug)
# ...
end
Run Code Online (Sandbox Code Playgroud)
rake
的习语,那么根据过去的答案编写你的可能性:这总是执行任务,但它不执行其依赖项:
Rake::Task["build"].execute
Run Code Online (Sandbox Code Playgroud)这个执行依赖项,但它只在尚未调用的情况下执行任务:
Rake::Task["build"].invoke
Run Code Online (Sandbox Code Playgroud)这首先重置任务的already_invoked状态,然后再次执行任务,依赖项和所有:
Rake::Task["build"].reenable
Rake::Task["build"].invoke
Run Code Online (Sandbox Code Playgroud)
(请注意,已经调用的依赖项不会被重新执行)
Mar*_*ski 123
例如:
Rake::Task["db:migrate"].invoke
Run Code Online (Sandbox Code Playgroud)
小智 56
task :build_all do
[ :debug, :release ].each do |t|
$build_type = t
Rake::Task["build"].reenable
Rake::Task["build"].invoke
end
end
Run Code Online (Sandbox Code Playgroud)
那应该把你排除在外,只需要自己做同样的事情.
pjb*_*jb3 11
task :build_all do
[ :debug, :release ].each do |t|
$build_type = t
Rake::Task["build"].execute
end
end
Run Code Online (Sandbox Code Playgroud)
Nee*_*mar 11
task :invoke_another_task do
# some code
Rake::Task["another:task"].invoke
end
Run Code Online (Sandbox Code Playgroud)