0.01
No release in over 3 years
Low commit activity in last 3 years
Rack Middleware for filtering by user agent
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

= 0.9.8
>= 0

Runtime

>= 1.3
>= 0.9.1
>= 0.4.16
 Project Readme

Rack::UserAgent¶ ↑

Rack Middleware for filtering by user agent

Use¶ ↑

Let’s say you don’t support IE6 and want to prevent IE6 users from accessing to your Rails app. You’re in luck. Just add this to your config/environment.rb:

config.gem "bebanjo-rack-useragent", :lib => "rack/user_agent", :source => "http://gems.github.com"

config.middleware.use "Rack::UserAgent::Filter", [
  {:browser => "Internet Explorer", :version => "7.0"}
]

And, of course, install the gem:

$ [sudo] rake gems:install

Done! From now on users with IE version lower than 7.0 will get a nice error message saying that their browsers need to be updated… Ok, ok, not so nice message, you can personalize it by putting an upgrade.html file inside the /public directory of your application.

- Hey, I need to show localized versions of the message to my french and spanish users!

No problem, just add upgrade.es.html and upgrade.fr.html to /public (Note that rack.locale env variable needs to be previously set for this to work. Rack::Locale in rack-contrib can do that for you)

- Cool!, what about something more dynamic… like ERB?

Granted! You’ll have to add to the config which template to use. In environment.rb:

config.middleware.use "Rack::UserAgent::Filter", [
  {:browser => "Internet Explorer", :version => "7.0"}
], :template => "#{RAILS_ROOT}/app/views/shared/upgrade.html.erb"

Then you could show the browser version as part of your message:

Sorry but <%= "#{@browser.browser} #{@browser.version}" %> is not supported

- Can I use it with non-Rails Rack frameworks, like Sinatra?

Sure. You only have to take into account that you’ll always have to set which template to use. i.e: In config.ru:

require 'rack/user_agent'

use Rack::UserAgent::Filter, [
  {:browser => "Internet Explorer", :version => "7.0"}
], :template => File.dirname(__FILE__) + "/public/upgrade.html"

Enjoy it!

Authors¶ ↑

  • Sergio Gil <sgilperez@gmail.com>

  • Luismi Cavallé <luismi@lmcavalle.com>

  • Paco Guzmán <pacoguzmanp@gmail.com>

Contributors¶ ↑

We’re looking forward for your patches. Fork us!

Copyright © 2008-2015 BeBanjo, released under the MIT license