Speed up Request#formats
This commit is contained in:
parent
a78b0a40c6
commit
6e039e863a
@ -3,7 +3,9 @@
|
||||
require 'strscan'
|
||||
|
||||
require 'active_support/memoizable'
|
||||
require 'active_support/core_ext/array/wrap'
|
||||
require 'active_support/core_ext/hash/indifferent_access'
|
||||
require 'active_support/core_ext/object/tap'
|
||||
|
||||
module ActionDispatch
|
||||
class Request < Rack::Request
|
||||
@ -173,15 +175,21 @@ def format(view_path = [])
|
||||
|
||||
def formats
|
||||
if ActionController::Base.use_accept_header
|
||||
ret = Array(Mime[parameters[:format]] || accepts)
|
||||
if defined?(ActionController::Http)
|
||||
if all = ret.index(Mime::ALL)
|
||||
ret.delete(Mime::ALL) && ret.insert(all, *Mime::SET)
|
||||
if param = parameters[:format]
|
||||
Array.wrap(Mime[param])
|
||||
else
|
||||
accepts.dup
|
||||
end.tap do |ret|
|
||||
if defined?(ActionController::Http)
|
||||
if ret == ONLY_ALL
|
||||
ret.replace Mime::SET
|
||||
elsif all = ret.index(Mime::ALL)
|
||||
ret.delete_at(all) && ret.insert(all, *Mime::SET)
|
||||
end
|
||||
end
|
||||
end
|
||||
ret
|
||||
else
|
||||
[format] + Mime::SET
|
||||
[format] + Mime::SET
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user