mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Ensure AssetUrlHelper can be mixed into AC::Base
This commit is contained in:
parent
1e2b0ce95e
commit
c3cff4d421
2 changed files with 46 additions and 6 deletions
|
@ -135,8 +135,7 @@ module ActionView
|
||||||
source = compute_asset_path(source, options)
|
source = compute_asset_path(source, options)
|
||||||
end
|
end
|
||||||
|
|
||||||
current_request = controller.request if controller.respond_to?(:request)
|
if relative_url_root = config.relative_url_root || asset_request.try(:script_name)
|
||||||
if relative_url_root = config.relative_url_root || current_request.try(:script_name)
|
|
||||||
source = "#{relative_url_root}#{source}" unless source.starts_with?("#{relative_url_root}/")
|
source = "#{relative_url_root}#{source}" unless source.starts_with?("#{relative_url_root}/")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -180,10 +179,7 @@ module ActionView
|
||||||
# or the value returned from invoking call on an object responding to call
|
# or the value returned from invoking call on an object responding to call
|
||||||
# (proc or otherwise).
|
# (proc or otherwise).
|
||||||
def compute_asset_host(source = "", options = {})
|
def compute_asset_host(source = "", options = {})
|
||||||
if controller.respond_to?(:request)
|
request = asset_request
|
||||||
request = controller.request
|
|
||||||
end
|
|
||||||
|
|
||||||
host = config.asset_host
|
host = config.asset_host
|
||||||
host ||= request.base_url if request && options[:protocol] == :request
|
host ||= request.base_url if request && options[:protocol] == :request
|
||||||
return unless host
|
return unless host
|
||||||
|
@ -342,6 +338,17 @@ module ActionView
|
||||||
url_to_asset(source, type: :font)
|
url_to_asset(source, type: :font)
|
||||||
end
|
end
|
||||||
alias_method :url_to_font, :font_url # aliased to avoid conflicts with an font_url named route
|
alias_method :url_to_font, :font_url # aliased to avoid conflicts with an font_url named route
|
||||||
|
|
||||||
|
private
|
||||||
|
# Get current request if self is a controller. If self is a
|
||||||
|
# view, check the parent controller's request.
|
||||||
|
def asset_request
|
||||||
|
if respond_to?(:request)
|
||||||
|
request
|
||||||
|
elsif respond_to?(:controller) && controller.respond_to?(:request)
|
||||||
|
controller.request
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,6 +13,8 @@ end
|
||||||
class AssetTagHelperTest < ActionView::TestCase
|
class AssetTagHelperTest < ActionView::TestCase
|
||||||
tests ActionView::Helpers::AssetTagHelper
|
tests ActionView::Helpers::AssetTagHelper
|
||||||
|
|
||||||
|
attr_reader :request
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
super
|
super
|
||||||
silence_warnings do
|
silence_warnings do
|
||||||
|
@ -598,6 +600,8 @@ end
|
||||||
class AssetTagHelperNonVhostTest < ActionView::TestCase
|
class AssetTagHelperNonVhostTest < ActionView::TestCase
|
||||||
tests ActionView::Helpers::AssetTagHelper
|
tests ActionView::Helpers::AssetTagHelper
|
||||||
|
|
||||||
|
attr_reader :request
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
super
|
super
|
||||||
@controller = BasicController.new
|
@controller = BasicController.new
|
||||||
|
@ -720,3 +724,32 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
|
||||||
assert_dom_equal(%(/collaboration/hieraki/stylesheets/foo.css), stylesheet_path("foo"))
|
assert_dom_equal(%(/collaboration/hieraki/stylesheets/foo.css), stylesheet_path("foo"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class AssetUrlHelperControllerTest < ActionView::TestCase
|
||||||
|
tests ActionView::Helpers::AssetUrlHelper
|
||||||
|
|
||||||
|
def setup
|
||||||
|
super
|
||||||
|
|
||||||
|
@controller = BasicController.new
|
||||||
|
@controller.extend ActionView::Helpers::AssetUrlHelper
|
||||||
|
|
||||||
|
@request = Class.new do
|
||||||
|
attr_accessor :script_name
|
||||||
|
def protocol() 'http://' end
|
||||||
|
def ssl?() false end
|
||||||
|
def host_with_port() 'www.example.com' end
|
||||||
|
def base_url() 'http://www.example.com' end
|
||||||
|
end.new
|
||||||
|
|
||||||
|
@controller.request = @request
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_asset_path
|
||||||
|
assert_equal "/foo", @controller.asset_path("foo")
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_asset_url
|
||||||
|
assert_equal "http://www.example.com/foo", @controller.asset_url("foo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in a new issue