2011-12-22 3 views
1

В нескольких местах указано, что ключевое слово «directory» может использоваться как сокращенная версия. По-видимому, он может быть указан как зависимость, так что он будет создан, если он еще не присутствует.rake - как работает ключевое слово «directory»?

http://onestepback.org/articles/buildingwithrake/directorydependencies.html

Идея заключается в том, чтобы указать папку назначения, как зависимость, а не пытаться создать его вручную каждый раз, что может быть достигнуто с помощью mkdir_p. Недостатком использования mkdir_p является то, что он отображает выходные данные независимо от того, была ли эта директория уже присутствующей. Альтернативное решение состоит в том, чтобы отключить эту команду - и даже лучше, если вывод будет отображаться только при создании каталога.

Я попытался с помощью "каталога" ключевое слово следующим образом:


file "destFile" => ["srcFile", directory "myOutputDir"] do 
    FileUtils.cp "srcFile" "myOutputDir/destFile" 
end 

file "destFile" => ["srcFile"] + [directory "myOutputDir"] do 
    FileUtils.cp "srcFile" "myOutputDir/destFile" 
end 

file "destFile" => ["srcFile"] do 
    directory "myOutputDir" 
    FileUtils.cp "srcFile" "myOutputDir/destFile" 
end 

ответ

1

Как об этом:

directory "myOutputDir" 
file "myOutputDir/destFile" => ["srcFile", "myOutputDir"] do 
    FileUtils.cp "srcFile" "myOutputDir/destFile" 
end 

Я считаю, что предполагается, что он будет использоваться как отдельная задача и указан как зависимость, как и любая другая задача. Это в основном то же самое, что и задание file, которое запускает mkdir, но действие неявно. В противном случае синтаксис не изменится.

directory также сделает все слои подкаталогов, как так: http://onestepback.org/articles/buildingwithrake/directorydependencies.html