Respostas:
Se você estiver executando em máquinas unixy, não se esqueça que você sempre pode executar um comando shell no ruby, colocando-o em crases.
`mkdir -p /a/b/c`
Pathname para o resgate!
Pathname('/a/b/c/d.txt').dirname.mkpath
FileUtils.mkdir_p '/a/b/c'
+ criar d.txt
ao mesmo tempo?
Pathname('/a/b/c/d.txt').dirname.mkpath
e File.write('/a/b/c/d.txt', content)
sem filename = '/a/b/c/d.txt'.rpartition('/').last
e o resto da análise
Você também pode usar sua própria 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
Portanto, se o caminho for 'tmp / a / b / c' se 'tmp' não existir, 'tmp' será criado, então 'tmp / a /' e assim por diante.
FileUtils
ePathname
são provavelmente as ferramentas mais importantes para scripts de shell Ruby.