やりたいこと
Railsを使用して、user-agentからPCかスマホかを判断したり、OSやデバイス名を抽出したいと思っています。しかし、これらを自分で実装するのは手間がかかります。
そこで、「rack-user_agent」というライブラリを使用してみました。
k0kubun/rack-user_agent: Rack::Request extension for handling User-Agent
インストール
gem 'rack-user_agent'
bundle install
使い方
Railsの場合、インストールすればrequestsオブジェクトにメソッドが勝手に生えてくれる
# Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 [2] pry(#<PostsController>)> request.device_type => :pc [3] pry(#<PostsController>)> request.os => "Mac OSX" [4] pry(#<PostsController>)> request.browser => "Chrome" [5] pry(#<PostsController>)> request.from_pc? => true [6] pry(#<PostsController>)> request.from_smartphone? => false [7] pry(#<PostsController>)> request.device_variant => :pc
スマホの場合
# Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 [2] pry(#<PostsController>)> request.device_type => :smartphone [3] pry(#<PostsController>)> request.os => "iPhone" [4] pry(#<PostsController>)> request.browser => "Safari" [5] pry(#<PostsController>)> request.from_pc? => false [6] pry(#<PostsController>)> request.from_smartphone? => true
更新頻度が高くないし、厳密なチェックには向いてないだろうけど軽く確認する場合には良いかも