動かざることバグの如し

近づきたいよ 君の理想に

Railsで簡単にデバイス判定できるライブラリ「rack-user_agent」

やりたいこと

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

更新頻度が高くないし、厳密なチェックには向いてないだろうけど軽く確認する場合には良いかも

参考リンク