C'è un modo per eseguire un compito rastrello senza correre i presupposti?
Domanda
C'è una riga di comando che mi manca?
Al momento sto avendo a che fare questo:
#task :install => :build do
task :install do
end
Soluzione
mi sembra di aver risolto questo problema con la semplice aggiunta di compiti supplementari in formato "taskname_no_prerequisites". Così, per esempio nel seguente codice in esecuzione "install_no_prerequisites rastrello" sarebbe non la causa "costruire" da eseguire.
desc "Build"
task :build do
puts "BUILDING..."
end
desc "Install"
task :install => :build do
puts "INSTALLING..."
end
Rake::Task::tasks.each do |task|
desc "#{task} without prerequisites"
task "#{task}_no_prerequisites".to_sym do
task.invoke_without_prerequisites
end
end
module Rake
class Task
def invoke_without_prerequisites
execute
end
end
end
Altri suggerimenti
se si definisce una dipendenza su un compito, sarà sempre essere eseguito prima. Tuttavia, è possibile creare le attività individualmente e poi aggregare insieme ad un altro compito, in questo modo:
task :build do
...
end
task :install do
...
end
task :go => [:build, :install]
e quindi è possibile chiamare il generare o installare compiti in modo indipendente, o di eseguire la sequenza con il compito go.
rake build
rake install
rake go
faccio questo molto, in realtà. lo rende molto comodo per me per eseguire singole fasi quando voglio, e hanno la più grande sequenza di passi quando ho bisogno di loro.