68937


`FileUtils.mkpath` は作成したディレクトリ名の配列を返すのに  
`Pathname#mkpath` が `nil` を返すのには何かそういう設計思想があるんでしょうか？

ディレクトリ名の`String`か`Pathname`を返した方が便利だと思うんですが…。


CC BY-SA 3.0
2016-11-16T02:36:13.050
30436
2020-07-25T06:55:03.373
3271
question
ruby
FileUtils.mkpath がディレクトリ名の配列を返すのに Pathname#mkpath が nil を返す理由


なんとなくの設計思想ですが、ファイルやディレクトリ操作系については次のような感じと思われます。

  1. Rubyの組み込みクラス(`Dir`や`File`)はPOSIX(UNIX/Linux)におけるCの関数由来の返り値を返す。([mkdir](https://linuxjm.osdn.jp/html/LDP_man-pages/man2/mkdir.2.html)等は成功が`0`)
  2. `FileUtils`は実際の操作されたファイルやディレクトリの名前等、操作された情報をなるべく返す。(例外はある)
  3. `Pathname`は、その戻り値が有用な場合(真偽値やオープンしたIO等)以外は無意味な固定値(`0`や`nil`)を返す。(失敗はエラーになるため、それらの戻り値を分岐に使うこともない)

`FileUtils`はいわゆるユーティリティークラスですが、`Pathname`はインスタンスに対しての操作になります。そのため、呼び出し元のレシーバーの情報を返しても意味が無いとなっているのでしょう。ただ、その戻り値も`0`だったり`nil`だったりとかなりブレブレなので、統一しろとIssueに投げてみるべきなのかも知れません。


CC BY-SA 4.0
2020-07-25T06:55:03.373
68937
2020-07-25T06:55:03.373
7347
30436
answer