Quiero almacenar un archivo como /a/b/c/d.txt, pero no sé si existe alguno de estos directorios y necesito crearlos de forma recursiva si es necesario. ¿Cómo se puede hacer esto en rubí?
101
Utilizar mkdir_p:
FileUtils.mkdir_p '/a/b/c'
El _pes un vestigio de UNIX para los padres / ruta también se puede utilizar el alias mkpathsi eso tiene más sentido para usted.
FileUtils.mkpath '/a/b/c'
En Ruby 1.9 FileUtils se eliminó del núcleo, por lo que tendrá que hacerlo require 'fileutils'.
FileUtilsyPathnameson probablemente las herramientas más importantes para la creación de scripts de shell Ruby.Utilice mkdir_p para crear directorio de forma recursiva
fuente
Si está ejecutando en máquinas Unixy, no olvide que siempre puede ejecutar un comando de shell bajo ruby colocándolo entre comillas invertidas.
fuente
File.makedirs
fuente
mkdir_pymkpathruby-doc.org/stdlib-2.6.5/libdoc/fileutils/rdoc/…Pathname al rescate!
fuente
FileUtils.mkdir_p '/a/b/c'+ creard.txtal mismo tiempo?Pathname('/a/b/c/d.txt').dirname.mkpathyFile.write('/a/b/c/d.txt', content)sinfilename = '/a/b/c/d.txt'.rpartition('/').lasty el resto del análisisTambién puedes usar tu propia lógica
Entonces, si la ruta es 'tmp / a / b / c' si 'tmp' no existe, se crea 'tmp', entonces 'tmp / a /' y así sucesivamente.
fuente