git ls-files -z
bunlderで生成されるgemspecの記述でちょっと気になったところがあったので調べてみました。
以前の記述
gem.files = `git ls-files`.split($\)
git ls-filesの結果をセット。
引数は Kernel.$\ のようで(module Kernel (Ruby 2.3.0))
出力レコード区切りを表す文字列です。デフォルトは nil で、何も出力しません。とのこと。
最近の記述
spec.files = `git ls-files -z`.split("\x0")
git ls-files -z となっています。
manの結果は以下。null文字をセットしているようです。
-z \0 line termination on output.
おそらく、ファイルパス内に $\ で指定された文字列を含む場合を考慮したものなんでしょう。
今日のyak shavingでした。