Mime::Type の register メソッドで定義される定数

2008/02/15 8:10am

Mime::Type.register は、登録された Mime::Type ではなく拡張子の配列を返す、という謎の挙動になっている。

Mime::Type.register "image/jpeg", :jpeg, [], ["jpg", "pjpeg"]
# => ["jpeg", "jpg", "pjpeg"]

そのため、登録された Mime::Type を参照するには、改めて Mime::Type.lookup する。

Mime::Type.lookup("image/jpeg")
# => #<Mime::Type:0x30601dc @string="image/jpeg", @synonyms=[], @symbol=:jpeg>

しかし、この方法は "image/jpeg" を二ヶ所にハードコードしてしまう。

代わりに、Mime::Type#register で Mime モジュールに定義される定数を使うことができる。

Mime::JPEG
# => #<Mime::Type:0x30601dc @string="image/jpeg", @synonyms=[], @symbol=:jpeg>

Mime::Type#register の第二引数に指定したシンボルを大文字にした定数が定義されているようだ。