Ruby имеет встроенные классы, чтобы упростить это:
Dir['deployment_dir/**/*'].delete_if { |f| f.end_with?('.txt') }
Однако для некоторых встроенных задач в rake есть помощники для этого. Адаптированный из API документов вы можете выбирать файлы следующим образом:
files_to_delete = FileList.new('deployment_dir/**/*') do |fl|
fl.exclude('*.txt')
end
Затем вы можете добавить это в вашу задачу удаления.
Еще лучше, вы можете использовать встроенные задачи CLEAN / CLOBBER:
# Your rake file:
require 'rake/clean'
# [] is alias for .new(), and we can chain .exclude
CLEAN = FileList['deployment_dir/**/*'].exclude('*.txt')
Тогда вы можете сказать в строке cmd:
rake clean
Прочтите учебник .