Я не могу говорить с Rake, поскольку я никогда не использовал его, но я использовал SCons , что, как я полагаю, то же самое, что и Rake, но в Python.
Основным преимуществом инструментов make на основе сценариев является то, что файлы сборки являются фактически исполняемыми сценариями. Другими словами, в Rake файл сборки - это скрипт Ruby, а в SCons - скрипт Python. Если вы можете что-то кодировать на языке, который поддерживает система сборки, вы можете сделать это во время сборки. Таким образом, гибкость там по сути неограниченна. Сравните это с NAnt, где файл сборки представляет собой серию инструкций и объявлений в XML. Конечно, вы можете встраивать скрипты и еще что-то в файл сборки NAnt, но вы все еще застряли с потоком, процедурой и синтаксисом языка, используемого для выражения задач.
Тогда есть и кривая обучения. NAnt относительно прост, но если вы разработчик C #, который никогда не видел файл компоновки, на первый взгляд он может быть немного ошеломляющим. Если вы начинающий разработчик Ruby и выбрали Rake, кривая обучения гораздо менее крутая.
Я никогда не сталкивался с тем, с чем не мог справиться NAnt, хотя я признаю, что некоторые крайние вещи, как правило, трудны. Если бы я использовал SCons, то было бы гораздо проще, если бы у меня была возможность написать скрипт Python (с доступом к превосходной стандартной библиотеке Python) для начала.