【Ruby on Rails5】railsでデバイスごとに処理を分けるのに便利なgem rack-user_agent
海外ドラマの感想を共有するSNS mitanoというサービスを運営しております。
www.mitano.jp
PCの場合にはこの画像、スマホの場合にはこの画像を表示
ということがしたい。
mitanoのドラマのimage情報はアマゾンのイメージサーバーのURLをDBに以下のように保持しています。
https://images-na.ssl-images-amazon.com/images/I/91L4NTy4XgL._SY300_.jpg
これをスマホの場合
https://images-na.ssl-images-amazon.com/images/I/91L4NTy4XgL._SY150_.jpg
ロジックで150にサイズを変更したい
便利なgemを発見したので使ってみます。
GitHub - k0kubun/rack-user_agent: Rack::Request extension for handling User-Agent
gemを以下のように追加。
gem 'rack-user_agent'
bundleでインストール
$ bundle
こんな風に簡単に判定できます。
class ApplicationController < ActionController::Base before_action :set_request_variant def index request.user_agent #=> "Mozilla/5.0 (Macintosh; ..." request.device_type #=> :pc request.os #=> "Mac OSX" request.browser #=> "Chrome" request.from_pc? #=> true request.from_smartphone? #=> false end private def set_request_variant request.variant = request.device_variant # :pc, :smartphone end end