Fix asset_path in mounted engine

Historically serving assets from a mountable engine could be achieved by
running ActionDispatch::Static as a part of engine middleware stack or
to copy assets prefixed with an engine name. After introduction of
assets pipeline this is not needed as all of the assets are served or
compiled into main application's assets.

This commit removes the obsolete line making asset_path always generate
paths relative to the root or config.relative_url_root if it's set.

(closes #8119)
This commit is contained in:
Piotr Sarnacki 2013-01-21 21:21:39 +01:00
parent 5984894fc9
commit 445f14e975
2 changed files with 10 additions and 2 deletions

@ -132,8 +132,7 @@ def asset_path(source, options = {})
source = compute_asset_path(source, options)
end
relative_url_root = (defined?(config.relative_url_root) && config.relative_url_root) ||
(respond_to?(:request) && request.try(:script_name))
relative_url_root = defined?(config.relative_url_root) && config.relative_url_root
if relative_url_root
source = "#{relative_url_root}#{source}" unless source.starts_with?("#{relative_url_root}/")
end

@ -89,6 +89,7 @@ class Engine < ::Rails::Engine
get '/generate_application_route', to: 'posts#generate_application_route'
get '/application_route_in_view', to: 'posts#application_route_in_view'
get '/engine_polymorphic_path', to: 'posts#engine_polymorphic_path'
get '/engine_asset_path', to: 'posts#engine_asset_path'
end
RUBY
@ -113,6 +114,10 @@ def application_route_in_view
def engine_polymorphic_path
render text: polymorphic_path(Post.new)
end
def engine_asset_path
render inline: "<%= asset_path 'images/foo.png' %>"
end
end
end
RUBY
@ -211,6 +216,10 @@ def app
# and in an application
get "/application_polymorphic_path"
assert_equal "/posts/44", last_response.body
# test that asset path will not get script_name when generated in the engine
get "/someone/blog/engine_asset_path"
assert_equal "/images/foo.png", last_response.body
end
test "route path for controller action when engine is mounted at root" do