Sinatraでブラウザーのバージョン判定

Sinatraでブラウザーのバージョンを判定する方法をメモ。最近公開したはてなスターカウンターは、ある程度作った後にIE7以下で動かないことが発覚した。あるある。で、仕方ないので当面、IE7以下のブラウザーは対応してませんのメッセージをだそうと思って、そのやり方を調べた。

request.user_agent

ググってもSinatraを使ったそれっぽいページが見つからなかったので、とりあえず、request.user_agentからIE7~5あたりの文字列とマッチする場合は未対応用HTMLを、それ以外は通常のHTMLを表示するように、以下のように書いた。

get '/' do
  ua = request.user_agent
  if ["MSIE 7.0", "MSIE 6.0", "MSIE 5.0"].find {|s| ua.include?(s) }
    slim :error_browser_version
  else
    slim :index
  end
end

ユーザーエージェントの文字列はこちらのページで調べた。すごく適当に書いたけど、どういう書き方が一般的なんだろう。もしかしたら、ブラウザー判定のためのSinatra用ライブラリとかあったりするのかな?


Sinatra: README (Japanese)