= /\AYOUR_PATTERN_HERE\z/.freeze SELLO_REQUEST_VARIANT = :sello.freeze included do prepend_before_action(:setup_sello_request) if sello_request? end def sello_request? request.user_agent =~ USER_AGENT_PATTERN end private def setup_sello_request request.variant = SELLO_REQUEST_VARIANT end end
... def sello_version sello_user_agent.version end private ... ... def sello_user_agent @sello_user_agent ||= begin info = USER_AGENT_PATTERN.match(request.user_agent) OpenStruct.new(platform: info[1], version: Gem::Version.new(info[2])) end end end