Ruby2.6アドベントカレンダーの4日目の記事です。
Dir
Dir#each_child
, Dir#children
追加
https://bugs.ruby-lang.org/issues/13969
Dir.each_child
, Dir.children
は 2.5 で追加されましたが、そのインスタンスメソッド版です。
Dir#each
, Dir#entries
と異なり、.
と ..
を含みません。
Dir.new(".").entries #=> ["123", "..", "abc", "."] Dir.new(".").children #=> ["123", "abc"]
Dir.glob
で \0
が非推奨
https://bugs.ruby-lang.org/issues/14643
警告が出力されるようになります。
% ruby -e 'Dir.glob("aaa\0bbb")' -e:1: warning: use glob patterns list instead of nul-separated patterns
File
File.read
, .binread
, .write
, .binwrite
, .foreach
, .readlines
が |
で始まっていても外部コマンドを実行しない
2.5 では warning が出るだけでしたが、2.6 では |
もファイル名の一部として扱われます。
2.5:
% ruby -e 'p File.read("|date")' -e:1: warning: IO.read called on File to invoke external command "2018年 12月 6日 木曜日 01:02:33 JST\n"
2.6:
% ruby -e 'p File.read("|date")' Traceback (most recent call last): 1: from -e:1:in `<main>' -e:1:in `read': No such file or directory @ rb_sysopen - |date (Errno::ENOENT)
FileUtils
FileUtils.cp_lr
追加
cp -lr
コマンドと同様のことを行うメソッドです。