rake - как работает ключевое слово "directory"? - PullRequest
1 голос
/ 23 декабря 2011

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

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

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

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


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 Ответ

1 голос
/ 23 декабря 2011

Как насчет этого:

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

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

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

...