Browser
Performance-optimized fork of the browser
Ruby gem.
Installation
gem install browser
Usage
require 'rubygems'
require 'browser2'
browser = Browser.new ua: 'some string', accept_language: 'en-us'
browser.name # readable browser name
browser.version # major version number
browser.full_version
browser.safari?
browser.opera?
browser.chrome?
browser.chrome_os?
browser.mobile?
browser.tablet?
browser.console?
browser.firefox?
browser.ie?
browser.ie?(6) # detect specific IE version
browser.edge? # Newest MS browser
browser.modern? # Webkit, Firefox 17+, IE 9+ and Opera 12+
browser.platform # return :mac, :windows, :linux or :other
browser.ios? # detect iOS
browser.ios?(9) # detect specific iOS version
browser.mac?
browser.windows?
browser.windows_x64?
browser.linux?
browser.blackberry?
browser.blackberry?(10) # detect specific BlackBerry version
browser.bot?
browser.search_engine?
browser.phantom_js?
browser.quicktime?
browser.core_media?
browser.silk?
browser.android?
browser.android?(4.2) # detect Android Jelly Bean 4.2
browser.known? # has the browser been successfully detected?
browser.meta # an array with several attributes
browser.to_s # the meta info joined by space
See the tests and implementation for more examples.
Integrations
Browser comes out-of-the-box with helpers for use in Ruby on Rails applications and Rack servers. See doc/rails_and_rack.md
for more details.
What defines a modern browser?
The current rules that define a modern browser are pretty loose:
- Webkit
- IE9+
- Microsoft Edge
- Firefox 17+
- Firefox Tablet 14+
- Opera 12+
You can define your own rules. A rule must be a proc/lambda or any object that implements the method === and accepts the browser object. To redefine all rules, clear the existing rules before adding your own.
# Only Chrome Canary is considered modern.
Browser.modern_rules.clear
Browser.modern_rules << -> b { b.chrome? && b.version.to_i >= 37 }
Internet Explorer
Internet Explorer has a compatibility view mode that allows newer versions (IE8+) to run as an older version. Browser will always return the navigator version, ignoring the compatibility view version, when defined. If you need to get the engine's version, you have to use Browser#msie_version
and Browser#msie_full_version
.
So, let's say an user activates compatibility view in a IE11 browser. This is what you'll get:
browser.version
#=> 11
browser.full_version
#=> 11.0
browser.msie_version
#=> 7
browser.msie_full_version
#=> 7.0
browser.compatibility_view?
#=> true
browser.modern?
#=> false
This behavior changed in v1.0.0
; previously there wasn't a way of getting the real browser version.
Bots
Browser used to detect empty user agents as bots, but this behavior has changed. If you want to bring this detection back, you can activate it through the following call:
Browser::Bots.detect_empty_ua!
Authors
-
Dirk Gadsden (
browser2
maintainer) -
Nando Vieira (original author of
browser
)
License
Licensed under the MIT license. See LICENSE for details.