В чем разница между обычными и файловыми задачами в Rake - PullRequest
2 голосов
/ 16 сентября 2011

В настоящее время я изучаю использование Rake для развертывания своих проектов и изучаю Ruby / Rake.Однако может кто-нибудь объяснить мне разницу между обычными и файловыми задачами?Это постоянно упоминается, но я понятия не имею, чем они отличаются, и я не могу найти определение?

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

Здесь

FileTask - это задача, которая включает зависимости на основе времени. Если какая-либо из предпосылок FileTask имеет временную метку, которая является более поздней, чем файл, представленный этой задачей, то файл необходимо перестроить (используя предоставленные действия).

2 голосов
/ 16 сентября 2011

Мартин Фаулер написал отличное объяснение этих функций.

Задачи файла

Задачи, о которых я говорил выше, аналогичны задачам в ant.Rake также поддерживает немного другой вид задач, называемый файловой задачей, который ближе к понятию задач в make.Вот еще один пример, несколько упрощенный, с моего веб-сайта rakefile.

file 'build/dev/rake.html' => 'dev/rake.xml' do |t|
  require 'paper'
  maker = PaperMaker.new t.prerequisites[0], t.name
  maker.run
end

С файлом, который вы ссылаетесь на реальные файлы, а не на имена задач.Таким образом, «build / dev / rake.html» и «dev / rake.xml» являются фактическими файлами.HTML-файл - это результат этой задачи, а XML-файл - это входные данные.Вы можете рассматривать файловую задачу как указание системе сборки, как создать выходной файл - действительно, это именно то, что нужно сделать в make - вы перечисляете нужные выходные файлы и говорите make, как их создать.

0 голосов
/ 16 сентября 2011

Файловая задача проверяет дату создания файла-задачи и предварительные условия.

Пример:

task 'xx.txt' => 'xx.dat' do
  p :x
end

xx.txt выполняется всегда.

file 'xx.txt' => 'xx.dat' do
  p :x
end

xx.txt выполняется только, если xx.dat моложе, то xx.txt (или если xx.txt еще не существует)

В обоих случаях файл (или задача) xx.dat долженесть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...