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. ;)

Comentários #

#1 Thiago Arrais disse:
28 Jan 07, 10:36PM

Nando, que tal publicar isso como plugin que modifica o objeto request? Assim poderíamos
ter algo do tipo:

browser = request.browser

Acho que muita gente deve querer usar isso. Vale a pena tentar publicar o plugin e talvez isso até vá parar no Rails Core.

#2 Ronie Uliana disse:
29 Jan 07, 10:54AM

Excelente, publica como gem ou como plugin!!!

#3 Nando Vieira disse:
29 Jan 07, 01:19PM

Pensei em fazer um acts_as_stats ;)
Mas agora estou com pouco tempo, então, vou deixar para daqui um mês ou dois.

#4 Rafael S. Souza disse:
05 Fev 07, 10:56PM

isso poderia ser num estilo mais ruby ;)

#verificando a plataforma
browser.windows?
browser.mac?
browser.linux?

#verificando o navegador
browser.ie?
browser.firefox?
browser.opera?

#5 Nando Vieira disse:
09 Fev 07, 11:16AM

@Rafael: feito! Achei muito melhor assim! vícios do PHP... :P

#6 Walter Cruz disse:
16 Mar 07, 09:50AM

Ei, vc tem a versão PHP encostada nalgum lugar aí pra emprestar pra esse seu pobre amigo?

#7 Nando Vieira disse:
16 Mar 07, 10:27AM

Devo ter. Vou procurar e te aviso! ;)

Deixe um comentário





Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.

jQuery: Dominando o framework

Você quer aprender a usar jQuery de verdade? Então chegou a hora! Neste workshop você verá como funciona este framework de JavaScript, entendendo todos os aspectos que fazem do jQuery uma das melhores ferramentas para desenvolvimento de interfaces.

Saiba mais Fechar

Conheça também o HOWTO