Issue #16972 has been updated by nobu (Nobuyoshi Nakada).

Assignee set to akr (Akira Tanaka)
Status changed from Open to Assigned
Description updated

`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?

----------------------------------------
Feature #16972: Pathname#mkpath to accept block to call on each created directory
https://bugs.ruby-lang.org/issues/16972#change-86272

* Author: Dan0042 (Daniel DeLorme)
* Status: Assigned
* Priority: Normal
* Assignee: akr (Akira Tanaka)
----------------------------------------
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:

```ruby
file = Pathname.new(Dir.pwd) + "a/b/c/d/e/foo.txt"  #any of these directories may already exist

file.dirname.ascend.take_while{ |d| !d.exist? }.reverse_each do |dir|
  dir.mkdir
  dir.chmod(0775) #rwxrwxr-x
end
```

It occured to me it would be very elegant if `mkpath` allowed this

```ruby
file.dirname.mkpath{ |dir| dir.chmod(0775) }
```




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>