Detectando o navegador no Rails

28 de Janeiro de 2007

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

Posts relacionados
Gerando boletos com Rails
Expandindo o helper DateTime do Rails
Estatísticas com o plugin TrackMe Stats no Rails

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




Este blog usa o Gravatar.


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.