Skip to content

Commit

Permalink
Fix asset_path in mounted engine
Browse files Browse the repository at this point in the history
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)
  • Loading branch information
drogus committed Jan 21, 2013
1 parent 5984894 commit 445f14e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
3 changes: 1 addition & 2 deletions actionpack/lib/action_view/helpers/asset_url_helper.rb
Expand Up @@ -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
Expand Down
9 changes: 9 additions & 0 deletions railties/test/railties/mounted_engine_test.rb
Expand Up @@ -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

Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 445f14e

Please sign in to comment.