Файловые задачи в Rake следует выполнять только в том случае, если файл, именем которого они названы, еще не существует.
У меня есть одна файловая задача, которая создает directory
, и одна файловая задача, которая создает * 1004. * в этом каталоге. Теперь файл не может быть создан, если каталог не существует, поэтому я установил задачу каталога как зависимость для задачи файла:
file "directory" do
mkdir_p "directory"
end
file "file" => "directory" do
touch "directory/file"
end
desc "Create file"
task build: "file"
Когда я впервые запускаю здесь задачу build
, все работает в соответствии с plan: сначала создается каталог, затем файл:
$ rake -t build
** Invoke build (first_time)
** Invoke file (first_time)
** Invoke directory (first_time)
** Execute directory
mkdir -p directory
** Execute file
touch directory/file
** Execute build
Когда я запускаю его второй раз после создания файла и содержащего его каталога, я ожидаю, что Rake ничего не сделает (not_needed
), поскольку все файлы, с которыми связаны файловые задачи, уже существуют. Вместо этого задача каталога пропускается, но задача файла выполняется:
$ rake -t build
** Invoke build (first_time)
** Invoke file (first_time)
** Invoke directory (first_time, not_needed)
** Execute file
touch directory/file
** Execute build
Как заставить Rake не запускать задачу file
, если directory
и file
оба уже существуют?