Скопируйте файл, создав каталоги по мере необходимости в Ruby
Скажем, у меня есть файл в /source.txt
, и я хочу скопировать его в /a/b/c.txt
. /a
и /a/b
могут существовать или не существовать.
Есть ли способ скопировать файл и при необходимости создать необходимые родительские каталоги?
В идеале это будет одна команда. В частности, я хотел бы избежать разбора частей файла/каталога пути назначения, а затем вручную вызвать FileUtils.mkdir_p
и FileUtils.cp
.
Pure Ruby предпочтительнее, хотя приемлемо решение, зависящее от Rails.
Ответы
Ответ 1
Обычно вам нужно убедиться, что путь к целевому каталогу существует, поэтому я сомневаюсь, что какая-либо встроенная команда делает то, что вы ищете.
Но использование FileUtils.mkdir_p(dir)
может быть очень простым, особенно с помощью File.dirname()
, чтобы проанализировать путь. Вы можете даже обернуть его в служебную программу, например:
require 'fileutils'
def copy_with_path(src, dst)
FileUtils.mkdir_p(File.dirname(dst))
FileUtils.cp(src, dst)
end