2010-09-10 15 views

Odpowiedz

164

Zastosowanie mkdir_p:

FileUtils.mkdir_p '/a/b/c' 

_p to przeżytek UNIX dla rodzica/ścieżki można także użyć aliasu mkpath jeśli to ma większy sens dla Ciebie.

FileUtils.mkpath '/a/b/c' 

W Ruby 1.9 fileutils został usunięty z jądra, więc będziesz musiał require 'fileutils'.

+9

+1. "FileUtils" i "Pathname" są prawdopodobnie * najważniejszymi narzędziami skryptów powłoki Ruby. –

3
require 'ftools' 

File.makedirs

+1

Dzięki za wskazówkę! Dokumenty wydają się preferować FileUtils.mkdir_p, więc wziąłem to ... – Jan

7

Jeśli używasz komputerów z obsługą systemu Unix, nie zapomnij, że zawsze możesz uruchomić polecenie powłoki pod ruby, umieszczając je w lewych klawiszach.

`mkdir -p /a/b/c` 
+1

Podanie wiersza poleceń dla funkcji, którą można wykonać za pomocą wbudowanej funkcji, nie jest dobre. –

+0

Jest jednak tak pozytywny. –

16

mkdir_p użytkownika można utworzyć katalogu rekurencyjnie

path = "/tmp/a/b/c" 

FileUtils.mkdir_p(path) unless File.exists?(path) 
0

Można również użyć własnej logiki

def self.create_dir_if_not_exists(path) 
    recursive = path.split('/') 
    directory = '' 
    recursive.each do |sub_directory| 
    directory += sub_directory + '/' 
    Dir.mkdir(directory) unless (File.directory? directory) 
    end 
end 

Więc jeśli ścieżka jest 'tmp/a/b/c' jeśli ' tmp "nie istnieje" tworzy się tmp, następnie "tmp/a /" itd.