Скопируйте файл, создавая каталоги по мере необходимости в Ruby - PullRequest
38 голосов
/ 16 февраля 2011

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

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

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

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

1 Ответ

84 голосов
/ 16 февраля 2011

Обычно вам нужно убедиться, что путь к целевому каталогу существует, поэтому я сомневаюсь, что какая-либо встроенная команда делает то, что вы ищете.

Но с использованием 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...