#ruby #automation #build-automation #rake #rakefile
#ruby #автоматизация #сборка-автоматизация #rake #rakefile
Вопрос:
Я использую следующий код для преобразования файлов из php в html. Для того, чтобы это сработало, я должен ввести имя каждого файла во второй строке.
p "convert files"
%w(file1 file2 file3).each do |name|
system %(php #{DIR}/#{name}.php > #{DIR2}/#{name}.htm)
end
Может кто-нибудь сказать мне, как сделать так, чтобы он автоматически находил любые файлы .php в главном каталоге и искал в любой определенной папке и их подпапках дополнительные файлы .php и сохранял их с похожими именами папок?
Например:
file1.php -> file1.htm
about-us/file2.php -> about-us/file2.htm
contact-us/department/file3.php -> contact-us/department/file3.htm
Ответ №1:
Самый простой способ — использовать Dir
:
Dir.chdir('where_the_php_files_area')
Dir['**/*.php'].each do |php|
htm = 'where_the_html_files_should_go/' php.sub(/.php$/, '.htm')
system("php #{php} > #{htm}")
end
**
Шаблон для Dir.glob
(ОН ЖЕ Dir[]
) рекурсивно сопоставляет каталоги, так что Dir[**/*.php]
вы получите все файлы PHP в текущем каталоге.
Комментарии:
1. Спасибо! Итак, если бы я хотел исключить каталог типа «включает» (и, возможно, другие), как я мог бы это сделать?
2. @Cofey: Самым простым способом было бы добавить
if(i_like_this_path(File.dirname(php))
проверку внутри блока.File.dirname
выдаст вам часть имени файла каталога, для которой вам нужно будет указать что-то разумноеi_like_this_path()
.3. @Andrew Grimm: Оставьте мой отступ в покое, пожалуйста. Я нахожу стандарт Ruby с двумя пробелами совершенно нечитаемым, и я отношусь к этому так же, как и сообщество Ruby 🙂
4. @mu слишком короткий, я, наконец, нашел время попробовать ваш скрипт, и, похоже, он не переходит во вложенные папки для поиска файлов .php. Это создает только файлы .htm в главном каталоге. Есть идеи?
5. @Cofey: Это не поиск всех файлов PHP или это ошибка с
htm
путем?Dir['**/*.php']
Должен найти все файлы PHP в текущем каталоге. ЧтоDir['**/*.php'].inspect
нужно сказать, когда вы находитесь вirb
нужном каталоге?