Bug #854

Rake::FileList#egrep が動かない

Added by okkez _ about 3 years ago. Updated 10 months ago.

Status:Closed Start date:12/11/2008
Priority:High Due date:12/24/2008
Assignee:- % Done:

0%

Category:core
Target version:1.9.1 Release Candidate
ruby -v:

Description

以下のような Rakefile を作って Ruby1.9.1 preview2 で動かすと動きません。

# Rakefile
# coding: utf-8
desc 'aaa'
task :a do
  p FileList['*.rb'].egrep(/require/)
end

カレントディレクトリに SJIS で書かれたファイルが存在する場合にこけました。

History

Updated by Yuki Sonoda about 3 years ago

  • Target version set to 1.9.1 Release Candidate

Updated by Yuki Sonoda about 3 years ago

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する

Updated by Yuki Sonoda about 3 years ago

  • Due date set to 12/22/2008
  • Category set to core
  • Assignee set to Yukihiro Matsumoto

Updated by Yuki Sonoda about 3 years ago

  • Priority changed from Normal to High

Updated by Yuki Sonoda about 3 years ago

  • Due date changed from 12/22/2008 to 12/24/2008
  • Assignee deleted (Yukihiro Matsumoto)

Updated by Yukihiro Matsumoto about 3 years ago

  • Status changed from Open to Closed
fixed by r20908.

Also available in: Atom PDF