RubyでContent-Type(MIME TYPE)を調べる方法

色々なgemが用意されてるみたいだけどmacrubyで使用しようと思ったらちょっとはまったので書いておく。

試したgem

上3つはこのサイトで試されてたので試してみました。
最後の奴は上3つじゃmacrubyじゃうまくいかんくて色々探して出会った奴。

  • mime-types
  • shared-mime-info
  • ramaze
  • mimemagic

mime-types

こいつがメジャーっぽい?
こいつが使えればよかったんだけど、どうやらmacrubyのバグがあるようでrubyでは問題なくてもmacrubyじゃ使えんかった。

shared-mime-info

ruby1.8.7だと動いたけど、ruby1.9.3だと動かんかった。当然macrubyでも動かず。

ramaze

最新のgemにmimeがない!?

mimemagic

救世主。素晴らしい!
ruby1.9.3でもmacrubyでもOK。とりあえずコイツを使うことにする。

使い方は簡単。

require 'mimemagic'
path = "mime.rb"

# 拡張子から判定する
puts MimeMagic.by_extension('html')

# パスから判定する
puts MimeMagic.by_path(path)

# ファイルの中身から判定する
puts MimeMagic.by_magic(File.open(path))