Rake настроен так же, как Make в том смысле, что Rakefile состоит из цели и зависимостей . Это отличается от обычного сценария ruby тем, что Rake запускается с запрашиваемой цели и рекурсивно выполняет свои зависимости перед выполнением самой цели.
Итак, установка может выглядеть так:
task :install => :stage do
# stuff to do
end
Здесь ваша цель - задача install
, и она зависит от другой задачи, называемой stage
.
Чтобы выполнить install
, Rake должен сначала выполнить зависимости stage
(если есть), затем stage
, а затем, наконец, install
. Так что нет, вы не выполняете весь файл, его достаточно для безопасного выполнения запрошенной вами цели.
Rake также поддерживает файловые цели:
file 'foo.html' => 'bar.xml' do |t|
# Build foo.html from bar.xml, however that is done
end
Если вы знаете Make, это выглядит знакомым. Сначала Rake проверяет, зависит ли bar.xml
от чего-либо, и если да, то выполняет это. Затем, если bar.xml
новее, чем foo.html
, Rake выполняет эту файловую задачу. Если foo.html
новее, то Rake предполагает, что он уже построен, и пропускает его.
Более подробно, руководство пользователя Rake - хорошее место для начала, если вы хотите узнать, что делает Rake.