Skip to content

Instantly share code, notes, and snippets.

@phocke
Created February 4, 2013 09:08
Show Gist options
  • Save phocke/4705763 to your computer and use it in GitHub Desktop.
Save phocke/4705763 to your computer and use it in GitHub Desktop.
refactoring old code
#Before
def redirect_blocked_browsers
if params['controller'] == 'page' && params['action'] == 'browser'
return true
end
user_agent = UserAgent.parse(request.env['HTTP_USER_AGENT'])
# Cater to CriOS until we find a better solution
browser, version = user_agent.browser, user_agent.version
if request.env['HTTP_USER_AGENT'] =~ /CriOS\/(\d+\.?\d+?)/
# Chrome/iOS
browser = 'Chrome'
version = UserAgent::Version.new($1)
end
version = UserAgent::Version.new("1.0") if (version.nil?)
if browser == 'Internet Explorer' && version.to_s.to_f < 8.0
render(template: 'page/browser_update.html.erb', layout: 'general_blank')
return false
elsif browser == 'Firefox' && version.to_s.to_f < 4.0
render(template: 'page/browser_update.html.erb', layout: 'general_blank')
return false
elsif browser == 'Safari' && version.to_s.to_f < 4.0
render(template: 'page/browser_update.html.erb', layout: 'general_blank')
return false
elsif browser == 'Chrome' && version.to_s.to_f < 7.0
render(template: 'page/browser_update.html.erb', layout: 'general_blank')
return false
end
return true
end
#After
def redirect_blocked_browsers
user_agent = UserAgent.parse(request.env['HTTP_USER_AGENT'])
browser = user_agent.browser
version = user_agent.version.to_s.split(".").first.to_i
if is_vintage_browser?(browser, version)
render(template: 'page/browser_update.html.erb',
layout: 'general_blank') and return
end
return true
end
def is_vintage_browser?(name, client_version)
vintage_version = AppConfig.blocked_browsers[name.downcase]
return false unless vintage_version #it means it is some niche browser
client_version < vintage_version
end
#After after
before_filter :redirect_vintage_browsers, if: :is_vintage_browser?
def redirect_vintage_browsers
render 'page/browser_update'
end
def is_vintage_browser?
browser = user_agent.browser
version = user_agent.version.to_s.split(".").first.to_i
vintage_version = AppConfig.blocked_browsers[browser.downcase]
version < vintage_version.to_i # to_i used once more just in case it's nil
end
def user_agent #new method created as I'll use it elsewere
@user_agent ||= UserAgent.parse(request.env['HTTP_USER_AGENT'])
end
@sjaveed
Copy link

sjaveed commented Feb 4, 2013

Arrrrticulated well, that one is!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment