Как «пропустить» задачу в rake

#ruby #rake

#ruby #rake

Вопрос:

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

Есть ли стандартный способ пропустить другие задачи? Я думаю о чем-то, может быть, как

 task :containers do
  sh "docker-composer up"
end

# the following doesn't exist
task :containers, if: `docker ps | grep mycontainer`.empty?
  

Ответ №1:

Вы можете использовать next ключевое слово, чтобы «пропустить» задачу, когда захотите, например

 task :containers do
  next if `docker ps | grep mycontainer`.empty?
  sh "docker-composer up"
end
  

и это не будет прерывать поток других задач в очереди.

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