I just had a case where I need to set the permissions on each directory created by Pathname#mkpath, but since this requires to know which directories are created I had to reimplement the mkpath logic like this:
file=Pathname.new(Dir.pwd)+"a/b/c/d/e/foo.txt"#any of these directories may already existfile.dirname.ascend.take_while{|d|!d.exist?}.reverse_eachdo|dir|dir.mkdirdir.chmod(0775)#rwxrwxr-xend
It occured to me it would be very elegant if mkpath allowed this
Pathname#mkpath is a wrapper of FileUtils.mkdir_p, and the latter has mode: argument to create intermediate directories.
So it would be simple and better to add the same option to Pathname#mkpath for this purpose, I think.
Or do you have any other use cases that this more generic solution is needed?
Thanks for the tip; all these years and I never realized FileUtils.mkdir_p had this mode: argument (and/or never realized what it was for).
I can imagine use cases for this generic solution: chown, chgrp, touch index.html
And in general I think it's better design to have generic/basic building blocks that can be combined in flexible ways.
But I have not personally experienced a need other than chmod, so for my case FileUtils.mkdir_p is enough.