Use user_agent_parser gem

Andrew Kane committed May 08, 2014
commit a27a77d435ffb3fd597a9090e139c9e345b3fba6
Showing 3 changed files with 11 additions and 22 deletions
ahoy_matey.gemspec +1 -0
@@ @@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
spec.add_dependency "browser", ">= 0.4.0"
spec.add_dependency "geocoder"
spec.add_dependency "referer-parser"
+ spec.add_dependency "user_agent_parser"
spec.add_dependency "request_store"
spec.add_development_dependency "bundler", "~> 1.5"
ahoy/model.rb b/lib/ahoy/model.rb +4 -22
@@ @@ -29,30 +29,12 @@ module Ahoy
def set_technology
if respond_to?(:user_agent)
- browser = Browser.new(ua: user_agent)
-
- self.browser = browser.name if respond_to?(:browser=)
+ agent = Ahoy.user_agent_parser.parse(user_agent)
- # TODO add more
- self.os =
- if browser.android?
- "Android"
- elsif browser.ios?
- "iOS"
- elsif browser.windows_phone?
- "Windows Phone"
- elsif browser.blackberry?
- "Blackberry"
- elsif browser.chrome_os?
- "Chrome OS"
- elsif browser.mac?
- "Mac"
- elsif browser.windows?
- "Windows"
- elsif browser.linux?
- "Linux"
- end if respond_to?(:os=)
+ self.browser = agent.name if respond_to?(:browser=)
+ self.os = agent.os.name if respond_to?(:os=)
+ browser = Browser.new(ua: user_agent)
self.device_type =
if browser.tv?
"TV"
ahoy_matey.rb b/lib/ahoy_matey.rb +6 -0
@@ @@ -2,6 +2,7 @@ require "addressable/uri"
require "browser"
require "geocoder"
require "referer-parser"
+ require "user_agent_parser"
require "request_store"
require "ahoy/version"
require "ahoy/controller"
@@ @@ -24,6 +25,11 @@ module Ahoy
@referrer_parser ||= RefererParser::Referer.new("https://github.com/ankane/ahoy")
end
+ # performance
+ def self.user_agent_parser
+ @user_agent_parser ||= UserAgentParser::Parser.new
+ end
+
def self.fetch_user(controller)
if user_method.respond_to?(:call)
user_method.call(controller)