Detectando o navegador no Rails


Leia em menos de um minuto

Eu tinha um script em PHP que fazia detecção de browser e acabei de portá-lo para Ruby.

Ele é bem simples mas serve muito bem. Para utilizá-lo, basta instanciá-lo da seguinte maneira:

ua = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
browser = Browser.new :user_agent => ua,
                      :accept_language => 'en-gb'

puts browser.ie?            #false
puts browser.opera?         #false
puts browser.safari?        #false
puts browser.mozilla?       #true
puts browser.firefox?       #true
puts browser.linux?         #false
puts browser.windows?       #true
puts browser.mac?           #false
puts browser.platform       #Windows
puts browser.name           #Firefox
puts browser.version        #2
puts browser.full_version   #2.0.0.1
puts browser.language       #English/United Kingdom
puts browser.user_agent     #Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

Você também pode instanciar o objeto passando o "request" como parâmetro:

@browser = Browser.new(:request => request)

Gosto de usá-lo para exibir um trecho específico de informação, da mesma maneira que a Mozilla Foundation faz quando você acessa a página do Firefox, sugerindo o instalador para seu sistema. Você pode fazer algo como:

Pegue o código direto do Subversion.

svn co http://svn.simplesideias.com.br/general/browser/

Update: A classe foi reformulada para deixar mais elegante. ;)