So, I was surprised to find out that Dir.mkdir will not create all
folders in a path when more than just the last level does not exist.
Example: Dir.mkdir(’/f1/f2/f3’) will not create /f3 when /f2 does not
exist. I expected it to make both /f2 and /f3 to get the job done. I
expected it because the language I used most previously did do that.
After some googling I’m not finding any elegant solutions.
Obviously I could split the path at / and iterate through each folder
name in sequence with an Exists? and mkdir follow up if needed.
Is that really the only option? To do this manually?
So, I was surprised to find out that Dir.mkdir will not create all
folders in a path when more than just the last level does not exist.
Example: Dir.mkdir(‘/f1/f2/f3’) will not create /f3 when /f2 does not
exist. I expected it to make both /f2 and /f3 to get the job done. I
expected it because the language I used most previously did do that.
Dir.mkdir emulates the unix mkdir command, which behaves this way. It
shouldn’t be surprising.
After some googling I’m not finding any elegant solutions.
Did you try ri?
Obviously I could split the path at / and iterate through each folder
name in sequence with an Exists? and mkdir follow up if needed.
Is that really the only option? To do this manually?
No. Look into FileUtils, specifically FileUtils.mkdir_p
So, I was surprised to find out that Dir.mkdir will not create all
folders in a path when more than just the last level does not exist.
Example: Dir.mkdir(’/f1/f2/f3’) will not create /f3 when /f2 does not
exist. I expected it to make both /f2 and /f3 to get the job done. I
expected it because the language I used most previously did do that.
After some googling I’m not finding any elegant solutions.
Obviously I could split the path at / and iterate through each folder
name in sequence with an Exists? and mkdir follow up if needed.
Is that really the only option? To do this manually?
ARGH. FileUtils.mkdir_p()
(never fails to find the answer right after posting)
So, I was surprised to find out that Dir.mkdir will not create all
folders in a path when more than just the last level does not exist.
Example: Dir.mkdir(‘/f1/f2/f3’) will not create /f3 when /f2 does not
exist. I expected it to make both /f2 and /f3 to get the job done. I
expected it because the language I used most previously did do that.
After some googling I’m not finding any elegant solutions.
require ‘fileutils’
FileUtils.mkdir_p ‘my/path/to/something’
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.