サイトアイコン Lonely Mobiler

Rails で端末の区別をするのに便利な gem rack-user_agent

Rails で Web アプリ作ってる時にスマートフォンとPCで処理を分けたいところが出てきた。自分で User-Agent を見て判別する処理を書くのはだるいので gem を探したら rack-user_agent という調度良い gem があったので使ってみた。

https://github.com/k0kubun/rack-user_agent

説明を見ると woothee-ruby という User-Agent をパースする gem をより使いやすくしたもののようだ。

https://github.com/woothee/woothee-ruby

rails なら Gemfile に gem 'rack-user_agent' と書いて bundle install すれば使えるようになる。

rack-user_agent を利用すると以下のようなメソッドを利用し、アクセスしてきた端末の情報を得る事ができる。

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

詳しい解説は github を見て欲しいが、見ての通り User-Agent だけでなくそれがスマートフォンなのか PC なのか、OS は何なのかを request から簡単に取得できる。

上記ではコントローラ内に記述してあるがもちろん View 内でも以下のように利用できる。

%div - if request.from_pc? -# パソコンのときの表示 - else -# スマホの時の表示 - if request.os == 'Android -# Android の時の表示

タイトルでは Rails と書いたが自分が Rails しか使ってないだけで Sinatra でも使えるようだ。

おかげでスマートフォンとパソコンとの処理を簡単に分ける事ができた。

Sponsored Link
モバイルバージョンを終了