Расстановка директивы encoding: UTF-8 для Ruby 1.9

September 23, 2011, revised April 9, 2012 bash Ruby Ruby 1.9 sed shell script UTF-8

В процессе переноса проекта на Ruby 1.9.3, как всегда, возникла проблема кодировки файлов, а именно того, что кодировку UTF-8 (как и любую другую, отличную от ASCII), нужно указывать явно.

Оказалось, это довольно легко сделать автоматически, с помощью консольного кунг-фу:

find . -iname '*.rb' -o -iname '*.rake' | \
  xargs file -I | \
  grep utf-8 | \
  sed -E 's/\:.+$//g' | \
  xargs -I {} sh -c "echo \"# encoding: utf-8\\n\" | cat - {} > /tmp/utf8comment.tmp && mv /tmp/utf8comment.tmp {}"

Вот и все, пять минут и требование выполнено.

Естественно, я не даю никаких гарантий, так что проверь git diff перед коммитом.

Buy Me a Coffee at ko-fi.com