Recursive mkdir

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?

Just curious.

– gw

On Mon, Feb 8, 2010 at 1:11 PM, Greg W. [email protected]
wrote:

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

Ben

On 2010-02-08, Greg W. [email protected] wrote:

Is that really the only option? To do this manually?

%x{mkdir -p “#{dir}”}
?

-s

Greg W. wrote:

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)

– gw

On Feb 8, 4:18 pm, Greg W. [email protected] wrote:

ARGH. FileUtils.mkdir_p()

Yea, but set $VERBOSE = true and watch all the pretty warnings.
Annoying.

On Feb 8, 10:11 pm, Greg W. [email protected] wrote:

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’