みなさん、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
ライブラリがありますRuby GitHubのライブラリ: https://github.com/gshutler/useragent
私は自分で使っていますが、これまでのところ宣伝されています。ユースケースでは、おそらくRailsプロジェクトまたは同様のもののヘルパーメソッド内からライブラリを呼び出すことができます。
そうは言っても、HTTP_USER_AGENT
はRailsヘルパーメソッドに公開されています。公開されていない場合は、コントローラーメソッドをヘルパーとして公開できます(AbstractController::Helpers::ClassMethods#helper_method
)。
browser gemは、Railsでブラウザーを検出するために特別に設計されています。
request.env['HTTP_USER_AGENT']
、これはクライアントのユーザーエージェントを返します。 HubertŁępicki によって投稿されたクイックヘルパーもあります。