[ruby][rails]Softbank対応(たぶん)携帯キャリア判別クラス

PerlPHPを参考に。
こんな感じですかね。帰ってくる文字列はまだVodafone名ですが(Softbankに変更すべき?)。

class MobileDetect
  DocomoReg = %r
  VodafoneReg = %r<(?:(?:Softbank|Vodafone|J-PHONE)/\d\.\d|MOT-)>
  EzwebReg = %r<^(?:KDDI-[A-Z]+\d+[A-Z]? )?UP\.Browser\/>
  AirhReg = %r<^Mozilla/3\.0\*1>

  def self.detect(user_agent)
    if MobileReg =~ user_agent
      return 'DoCoMo' if $1
      return 'Vodafone' if $2
      return 'EZweb' if $3
      return 'Airh' if $4
    end

    return nil
  end
end

if __FILE__ == $0
  p MobileDetect.detect('DoCoMo/1.0/D501i')
  p MobileDetect.detect('DoCoMo/2.0 N2002(c100)')
  p MobileDetect.detect('DoCoMo/2.0 P2002(c100)')
  p MobileDetect.detect('DoCoMo/1.0/D504i/c10/TJ')
  p MobileDetect.detect('DoCoMo/1.0/F671iS/c10/TB')
  p MobileDetect.detect('DoCoMo/2.0 N2001(c10;ser0123456789abcde;icc01234567890123456789)')
  p MobileDetect.detect('J-PHONE/4.0/J-SH51/SNJSHA3029293 SH/0001aa Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0')
end

*1:?:DDIPOCKET|WILLCOM);> MobileReg = %r<(?:(#{DocomoReg})|(#{VodafoneReg})|(#{EzwebReg})|(#{AirhReg}