File.extname と日本語ファイル名(とpaperclip)

結論から言うとたまにシクる(空が返される)。
どういう実装になっているのか未調査。
ファイル名に日本語を使うな、というのが結論か。


paperclipでファイル名が日本語だと拡張子がうまく取れなくて、
:extension による補完が空になって、originalディレクトリに
拡張子なしのファイルが保存されてしまう。


しかもwindows環境ではその拡張子なしファイルが消せなくて、
とりあえずフォルダの場所を移動してごまかすその場しのぎ。


問題の場所は
paperclip-2.3.4/lib/paperclip/interpolations.rb
の83行目。無理やりなんとかした。



def extension attachment, style_name
# ((style = attachment.styles[style_name]) && style[:format]) ||
# File.extname(attachment.original_filename).gsub(/^\.+/, "")
real_extension = $1 if /\.(.+?)$/ =~ attachment.original_filename
((style = attachment.styles[style_name]) && style[:format]) || real_extension
end

とりあえず動いているけどクライアントさんに
「日本語ファイル名やめてください」とお願いしておこう。