Shouldn't asset tag helpers (like image_tag) be able to return
absolute paths without asset_host being set?
Both rely on compute_public_path to generate the path. Depending on
the value of its "include_host" argument (always true when called from
the image helpers), compute_public_path tries to determine a host to
prefix onto the path using the compute_asset_host method. But
compute_asset_host only uses the ActionController::Base.asset_host
method to find a suitable host.
The net result is that only relative paths can be generated unless
asset_host has been set. Particularly when generating image and
stylesheet tags in ActionMailer, this is a show-stopper: HTML email
practically requires absolute URIs.
My questions to the group:
1. How acceptable is it that the image tag/path helpers effectively
ask for absolute paths, even for pages with a request, where relative
tags will work just fine? Should these helpers expose the
"include_host" argument of compute_public_path?
2. How acceptable is it that, despite being asked for absolute paths
via "include_host", compute_public_path fails to include a host unless
ActionController::Base.asset_host is configured?
3. Would a patch to compute_asset_host that returns the root URL (with
host/protocol) when asset_host is not set be attractive? The root URL
can be determined in several ways, but the most attractive is probably
to use the root_url helper -which allows it to work with ActionMailer
when default_url_options is set.
I've written such a patch, but there are a lot of tests that break
because there seems to be an expectation that asset paths be relative,
regardless of the setting of "include_host". See it here: