Ruby 2.5 での FileUtils.rmdir の挙動の変更

未明くらいに RuboCop の CI で ruby-head が落ちている問題を解決していたりした。

github.com

結論だけ書くと、FileUtils.rmdir の挙動が Ruby 2.5 で変更されるということに影響を受けていたのが原因だった。以下 Issue から少しアレンジして抜粋。

サンプルコード (example.rb)

require 'fileutils'

FileUtils.mkdir("/tmp/foo")
FileUtils.touch("/tmp/foo/bar.txt")
FileUtils.rmdir("/tmp/foo") # 確認したい箇所

Ruby 2.4.2

% rm -rf /tmp/foo
% ruby example.rb
% ls /tmp/foo
bar.txt

Ruby 2.5.0-dev (2017-10-30 trunk 60580)

% rm -rf /tmp/foo
% ruby example.rb
  Traceback (most recent call last):
        4: from -e:1:in `<main>'
        3: from /Users/koic/.rbenv/versions/2.5.0-dev/lib/ruby/2.5.0/fileutils.rb:247:in `rmdir'
        2: from /Users/koic/.rbenv/versions/2.5.0-dev/lib/ruby/2.5.0/fileutils.rb:247:in `each'
        1: from /Users/koic/.rbenv/versions/2.5.0-dev/lib/ruby/2.5.0/fileutils.rb:248:in `block in rmdir'

この辺りの経緯の bugs は以下。

bugs.ruby-lang.org

話ついでに RuboCop の CI で落ちている jruby-head の方は以前出した Issue が JRuby 9.2.0.0 マイルストーンに入ったようなので静観している。

github.com


あとこの日の大きなイベントとしては RWC 2017 のため東京から島根に移動してした。