提交 37654d12 编写于 作者: A Aaron Patterson

ask the routes objects for its Rack env key

this centralizes the logic for determining the script name key and drops
object allocations when calling `engine_script_name` (which is called on
each `url_for`).
上级 a8a361cf
......@@ -114,7 +114,7 @@ def original_script_name # :nodoc:
end
def engine_script_name(_routes) # :nodoc:
env["ROUTES_#{_routes.object_id}_SCRIPT_NAME"]
env[_routes.env_key]
end
def request_method=(request_method) #:nodoc:
......
......@@ -308,6 +308,7 @@ def define_url_helper(mod, route, name, opts, route_key, url_strategy)
attr_accessor :formatter, :set, :named_routes, :default_scope, :router
attr_accessor :disable_clear_and_finalize, :resources_path_names
attr_accessor :default_url_options, :request_class
attr_reader :env_key
alias :routes :set
......@@ -325,6 +326,7 @@ def initialize(request_class = ActionDispatch::Request)
@prepend = []
@disable_clear_and_finalize = false
@finalized = false
@env_key = "ROUTES_#{object_id}_SCRIPT_NAME".freeze
@set = Journey::Routes.new
@router = Journey::Router.new @set
......
......@@ -513,7 +513,7 @@ def endpoint
def call(env)
env.merge!(env_config)
if env['SCRIPT_NAME']
env["ROUTES_#{routes.object_id}_SCRIPT_NAME"] = env['SCRIPT_NAME'].dup
env[routes.env_key] = env['SCRIPT_NAME'].dup
end
app.call(env)
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册