Actions
Bug #854
closedRake::FileList#egrep が動かない
ruby -v:
Backport:
Actions
Like0
Like0Like0Like0Like0Like0Like0
Added by okkez (okkez _) over 16 years ago. Updated almost 14 years ago.
=begin
=end
=begin
Yuguiです。
okkez _ さんは書きました:
以下のような Rakefile を作って Ruby1.9.1 preview2 で動かすと動きません。
Rakefile¶
coding: utf-8¶
desc 'aaa'
task :a do
p FileList['*.rb'].egrep(/require/)
endカレントディレクトリに SJIS で書かれたファイルが存在する場合にこけました。
これ、
*.rbをexternal_encoding指定無しで開いてeach_lineして、
各行に対して/require/.match(line) して、
マッチしたらその行を出力、ということをやっていて、
途中でdefault_externalとして壊れている行(cp932文字列リテラル)に出会って
それでArgumentError(invalid byte sequence in UTF-8)になってます。
壊れている文字列とのマッチで例外というのはそれなりにreasonableだと思って
いたんですが、このケースは確かに何か困りそうです。.rbならまだしもmagic
commentを読めとも言えますが、.txtの場合だってあるわけです。
これの対応策としてはエンコーディングが不明ならASCII-8BITで開け、というこ
とになりますでしょうか。
--
Yugui yugui@yugui.jp
http://yugui.jp
私は私をDumpする
=end
=begin
=end
=begin
=end
=begin
fixed by r20908.
=end