Respuestas:
Si está ejecutando en máquinas Unixy, no olvide que siempre puede ejecutar un comando de shell bajo ruby colocándolo entre comillas invertidas.
`mkdir -p /a/b/c`
Pathname al rescate!
Pathname('/a/b/c/d.txt').dirname.mkpath
FileUtils.mkdir_p '/a/b/c'
+ crear d.txt
al mismo tiempo?
Pathname('/a/b/c/d.txt').dirname.mkpath
y File.write('/a/b/c/d.txt', content)
sin filename = '/a/b/c/d.txt'.rpartition('/').last
y el resto del análisis
También puedes usar tu propia lógica
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
Entonces, si la ruta es 'tmp / a / b / c' si 'tmp' no existe, se crea 'tmp', entonces 'tmp / a /' y así sucesivamente.
FileUtils
yPathname
son probablemente las herramientas más importantes para la creación de scripts de shell Ruby.