Подтвердить что ты не робот

Скопируйте файл, создав каталоги по мере необходимости в Ruby

Скажем, у меня есть файл в /source.txt, и я хочу скопировать его в /a/b/c.txt. /a и /a/b могут существовать или не существовать.

Есть ли способ скопировать файл и при необходимости создать необходимые родительские каталоги?

В идеале это будет одна команда. В частности, я хотел бы избежать разбора частей файла/каталога пути назначения, а затем вручную вызвать FileUtils.mkdir_p и FileUtils.cp.

Pure Ruby предпочтительнее, хотя приемлемо решение, зависящее от Rails.

4b9b3361

Ответ 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