web-dev-qa-db-ja.com

Railsブラウザ検出方法

みなさん、Railsでブラウザーを検出するための業界内の標準的な方法は何だと思いましたか?ブラウザを決定し、クラスまたはIDを(X)HTMLのbody要素に適用するのに役立つgem、ライブラリ、またはサンプルコードはどこかにありますか?おかげで、私は誰もが何を使用し、これを行うための受け入れられた方法があるかどうか疑問に思っていますか?

User.agentを取得してその文字列を解析できることは知っていますが、それがブラウザ検出を行うのに受け入れられる方法であるかどうかはわかりません。

また、ここで機能の検出について議論しようとはしていません。StackOverflowでそれについて複数の回答を読みました。

[更新]

GitHubの faunzy のおかげで、Railsでユーザーエージェントをチェックすることについて少し理解しましたが、これがRails 3.しかし、私がこれまでに得たものは次のとおりです。

def users_browser
user_agent =  request.env['HTTP_USER_AGENT'].downcase 
@users_browser ||= begin
  if user_agent.index('msie') && !user_agent.index('opera') && !user_agent.index('webtv')
                'ie'+user_agent[user_agent.index('msie')+5].chr
    elsif user_agent.index('gecko/')
        'gecko'
    elsif user_agent.index('opera')
        'opera'
    elsif user_agent.index('konqueror')
        'konqueror'
    elsif user_agent.index('iPod')
        'iPod'
    elsif user_agent.index('ipad')
        'ipad'
    elsif user_agent.index('iphone')
        'iphone'
    elsif user_agent.index('chrome/')
        'chrome'
    elsif user_agent.index('applewebkit/')
        'safari'
    elsif user_agent.index('googlebot/')
        'googlebot'
    elsif user_agent.index('msnbot')
        'msnbot'
    elsif user_agent.index('yahoo! Slurp')
        'yahoobot'
    #Everything thinks it's mozilla, so this goes last
    elsif user_agent.index('mozilla/')
        'gecko'
    else
        'unknown'
    end
    end

    return @users_browser
end
51
alvincrespo

ライブラリがありますRuby GitHubのライブラリ: https://github.com/gshutler/useragent

私は自分で使っていますが、これまでのところ宣伝されています。ユースケースでは、おそらくRailsプロジェクトまたは同様のもののヘルパーメソッド内からライブラリを呼び出すことができます。

そうは言っても、HTTP_USER_AGENTはRailsヘルパーメソッドに公開されています。公開されていない場合は、コントローラーメソッドをヘルパーとして公開できます(AbstractController::Helpers::ClassMethods#helper_method)。

23

browser gemは、Railsでブラウザーを検出するために特別に設計されています。

59
Rob

request.env['HTTP_USER_AGENT']、これはクライアントのユーザーエージェントを返します。 HubertŁępicki によって投稿されたクイックヘルパーもあります。

5
farnoy