Sha256: 394affa71180563f367ad9ef12f3c3b643d9fe7d0e04772d38fb576069492c79

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

require 'rails/browser_detector/version'
require 'rails/browser_detector/engine'

require 'user_agent_parser'

module Rails
  module BrowserDetector
    class << self
      def detect(user_agent)
        user_agent_parser.parse(user_agent)
      end

      private

      # Internal: Возвращает экземпляр парсера, использующий кастомный файл с регулярками.
      #   Дефолтный файл не используется, потому что в нем содержится много правил.
      #   Кастомный файл - это дефолтный, из которого вырезаны ненужные для нас правила.
      #
      # Examples
      #   browser = Rails::BrowserDetector.user_agent_parser.parse(request.user_agent)
      #   browser.family #=> 'IE'
      #   browser.version.major #=> 10
      #
      # Returns an instance of UserAgentParser::Parser.
      def user_agent_parser
        return @user_agent_parser if defined? @user_agent_parser

        patterns_path = "#{Gem.loaded_specs['rails-browser_detector'].gem_dir}/config/regexes.yml"
        @user_agent_parser = ::UserAgentParser::Parser.new(patterns_path: patterns_path)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails-browser_detector-0.1.0 lib/rails/browser_detector.rb