mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Get rid of relative_url_path in favor of respecting SCRIPT_NAME. Also added a way to specify a default SCRIPT_NAME when generating URLs out of the context of a request.
This commit is contained in:
parent
3438373f03
commit
900a2d304a
6 changed files with 19 additions and 6 deletions
|
@ -12,7 +12,7 @@ module ActionController
|
|||
# ROUTES TODO: relative_url_root should be middleware
|
||||
# and the generator should take SCRIPT_NAME into
|
||||
# consideration
|
||||
:relative_url_root => config.relative_url_root,
|
||||
:script_name => request.env["SCRIPT_NAME"],
|
||||
:_path_segments => request.symbolized_path_parameters
|
||||
)
|
||||
end
|
||||
|
|
|
@ -51,6 +51,12 @@ module ActionController
|
|||
ac.stylesheets_dir = paths.public.stylesheets.to_a.first
|
||||
ac.secret = app.config.cookie_secret
|
||||
|
||||
if ac.relative_url_root
|
||||
ActiveSupport::Deprecation.warn "config.action_controller.relative_url_root " \
|
||||
"is no longer effective. Please set it in the router as " \
|
||||
"routes.draw(:script_name => #{ac.relative_url_root.inspect})"
|
||||
end
|
||||
|
||||
ActionController::Base.config.replace(ac)
|
||||
end
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ module ActionController
|
|||
|
||||
# ROUTES TODO: Fix the tests
|
||||
segments = options.delete(:_path_segments)
|
||||
relative_url_root = options.delete(:relative_url_root).to_s
|
||||
relative_url_root = options.delete(:script_name).to_s
|
||||
path_segments = path_segments ? path_segments.merge(segments || {}) : segments
|
||||
|
||||
unless options[:only_path]
|
||||
|
|
|
@ -211,6 +211,7 @@ module ActionDispatch
|
|||
|
||||
attr_accessor :routes, :named_routes
|
||||
attr_accessor :disable_clear_and_finalize, :resources_path_names
|
||||
attr_accessor :script_name
|
||||
|
||||
def self.default_resources_path_names
|
||||
{ :new => 'new', :edit => 'edit' }
|
||||
|
@ -225,9 +226,11 @@ module ActionDispatch
|
|||
@disable_clear_and_finalize = false
|
||||
end
|
||||
|
||||
def draw(&block)
|
||||
def draw(options = {}, &block)
|
||||
clear! unless @disable_clear_and_finalize
|
||||
|
||||
@script_name = options[:script_name]
|
||||
|
||||
mapper = Mapper.new(self)
|
||||
if block.arity == 1
|
||||
mapper.instance_exec(DeprecatedMapper.new(self), &block)
|
||||
|
|
|
@ -101,7 +101,11 @@ module ActionDispatch
|
|||
# end
|
||||
|
||||
def url_options
|
||||
self.class.default_url_options.merge(@url_options || {})
|
||||
@url_options ||= begin
|
||||
opts = self.class.default_url_options
|
||||
opts.merge(:script_name => _router.script_name) if respond_to?(:_router)
|
||||
opts
|
||||
end
|
||||
end
|
||||
|
||||
def url_options=(options)
|
||||
|
|
|
@ -118,7 +118,7 @@ module AbstractController
|
|||
|
||||
add_host!
|
||||
assert_equal('https://www.basecamphq.com/subdir/c/a/i',
|
||||
W.new.url_for(:controller => 'c', :action => 'a', :id => 'i', :protocol => 'https', :relative_url_root => '/subdir')
|
||||
W.new.url_for(:controller => 'c', :action => 'a', :id => 'i', :protocol => 'https', :script_name => '/subdir')
|
||||
)
|
||||
end
|
||||
|
||||
|
@ -153,7 +153,7 @@ module AbstractController
|
|||
controller = kls.new
|
||||
|
||||
assert_equal 'http://www.basecamphq.com/subdir/home/sweet/home/again',
|
||||
controller.send(:home_url, :host => 'www.basecamphq.com', :user => 'again', :relative_url_root => "/subdir")
|
||||
controller.send(:home_url, :host => 'www.basecamphq.com', :user => 'again', :script_name => "/subdir")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue