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)
|
||||
end
|
||||
|
||||
current_request = controller.request if controller.respond_to?(:request)
|
||||
if relative_url_root = config.relative_url_root || current_request.try(:script_name)
|
||||
if relative_url_root = config.relative_url_root || asset_request.try(:script_name)
|
||||
source = "#{relative_url_root}#{source}" unless source.starts_with?("#{relative_url_root}/")
|
||||
end
|
||||
|
||||
|
@ -180,10 +179,7 @@ module ActionView
|
|||
# or the value returned from invoking call on an object responding to call
|
||||
# (proc or otherwise).
|
||||
def compute_asset_host(source = "", options = {})
|
||||
if controller.respond_to?(:request)
|
||||
request = controller.request
|
||||
end
|
||||
|
||||
request = asset_request
|
||||
host = config.asset_host
|
||||
host ||= request.base_url if request && options[:protocol] == :request
|
||||
return unless host
|
||||
|
@ -342,6 +338,17 @@ module ActionView
|
|||
url_to_asset(source, type: :font)
|
||||
end
|
||||
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
|
||||
|
|
|
@ -13,6 +13,8 @@ end
|
|||
class AssetTagHelperTest < ActionView::TestCase
|
||||
tests ActionView::Helpers::AssetTagHelper
|
||||
|
||||
attr_reader :request
|
||||
|
||||
def setup
|
||||
super
|
||||
silence_warnings do
|
||||
|
@ -598,6 +600,8 @@ end
|
|||
class AssetTagHelperNonVhostTest < ActionView::TestCase
|
||||
tests ActionView::Helpers::AssetTagHelper
|
||||
|
||||
attr_reader :request
|
||||
|
||||
def setup
|
||||
super
|
||||
@controller = BasicController.new
|
||||
|
@ -720,3 +724,32 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
|
|||
assert_dom_equal(%(/collaboration/hieraki/stylesheets/foo.css), stylesheet_path("foo"))
|
||||
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