Skip to content

Instantly share code, notes, and snippets.

@gkop
Last active December 23, 2015 22:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gkop/6701598 to your computer and use it in GitHub Desktop.
Save gkop/6701598 to your computer and use it in GitHub Desktop.
Blacklist known-incompatible browsers and versions in Rails
# assumes UserAgent gem is available
# https://rubygems.org/gems/useragent
class ApplicationController < ActionController::Base
# blacklist recognized browser with lower versions than those below
Browser = Struct.new(:browser, :version)
BROWSERS = [
Browser.new("Chrome", "3.0"),
Browser.new("Firefox", "3.0"),
Browser.new("Internet Explorer", "8.0"),
Browser.new("Opera", "9.5"),
Browser.new("Safari", "4.0")
]
before_filter :check_browser, except: [ :upgrade_browser ]
def check_browser
if request.format == :html &&
!current_user &&
(user_agent = UserAgent.parse(request.user_agent)) &&
user_agent.size > 0 &&
user_agent.version &&
BROWSERS.any? {|browser| user_agent.browser == browser[0] } &&
BROWSERS.none? { |browser| user_agent >= browser }
redirect_to upgrade_browser_path
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment