Project

browser2

0.0
No commit activity in last 3 years
No release in over 3 years
Optimized browser user agent detection library.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 1.11
 Project Readme

Browser

Travis-CI

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

License

Licensed under the MIT license. See LICENSE for details.