Jawaban:
Gunakan mkdir_p untuk membuat direktori secara rekursif
path = "/tmp/a/b/c"
FileUtils.mkdir_p(path) unless File.exists?(path)
Jika Anda menjalankan pada mesin unixy, jangan lupa Anda selalu dapat menjalankan perintah shell di bawah ruby dengan menempatkannya di backticks.
`mkdir -p /a/b/c`
Pathname untuk menyelamatkan!
Pathname('/a/b/c/d.txt').dirname.mkpath
FileUtils.mkdir_p '/a/b/c'+ membuat d.txtpada saat yang sama?
Pathname('/a/b/c/d.txt').dirname.mkpathdan File.write('/a/b/c/d.txt', content)tanpa filename = '/a/b/c/d.txt'.rpartition('/').lastdan sisa penguraian
Anda juga bisa menggunakan logika Anda sendiri
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
Jadi jika path adalah 'tmp / a / b / c' jika 'tmp' tidak ada 'tmp' dibuat, maka 'tmp / a /' dan seterusnya dan seterusnya.
FileUtilsdanPathnamemungkin yang alat yang paling penting untuk Ruby shell scripting.