# see https://github.com/rack/rack/pull/659 require 'rack' if Rack.release <= '1.5' require 'rack/utils' Rack::Utils.class_eval do def self.best_q_match(q_value_header, available_mimes) values = q_values(q_value_header) values.map do |req_mime, quality| match = available_mimes.find { |am| Rack::Mime.match?(am, req_mime) } next unless match [match, quality] end.compact.sort_by do |match, quality| (match.split('/', 2).count('*') * -10) + quality end.last.first end end end