2010-09-17 9 views

ответ

2

Я, похоже, решил эту проблему, просто добавив дополнительные задачи в формате «taskname_no_prerequisites». Так, например, в приведенном ниже коде выполнение «rake install_no_prerequisites» не приведет к выполнению «сборки».

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 
+1

Почему бы не вызвать .execute непосредственно на объект задачи в определении задачи? Invoke_without_prerequisites кажется просто псевдонимом – Titas

1

если определить зависимость от задачи, он всегда будет работать первым. Тем не менее, вы можете создавать свои задачи по отдельности, а затем объединить их вместе с другой задачей, как это:

task :build do 
    ... 
end 

task :install do 
    ... 
end 

task :go => [:build, :install] 

, а затем вы можете вызвать сборку или установить задачи самостоятельно, или запустить последовательность с задачей идти.

rake build
rake install
rake go

я сделать это много, на самом деле. мне очень удобно запускать отдельные шаги, когда захочу, и выполнять большую последовательность шагов, когда они мне нужны.

+0

Я полагаю, что это достаточно хороший ответ. Я действительно искал простой переключатель командной строки, который просто пропустил зависимости. – AndrewVos

+0

О, я забыл сказать спасибо! – AndrewVos

Смежные вопросы