aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--railties/lib/rails/engine.rb6
-rw-r--r--railties/test/railties/engine_test.rb39
2 files changed, 31 insertions, 14 deletions
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index de16c55990..49553a57f3 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -256,7 +256,11 @@ module Rails
end
def config
- @config ||= Engine::Configuration.new(find_root_with_flag("lib"))
+ @config ||= begin
+ config = Engine::Configuration.new(find_root_with_flag("lib"))
+ config.asset_path = "/#{engine_name}%s" if File.exists?(config.paths.public.to_a.first)
+ config
+ end
end
# Add configured load paths to ruby load paths and remove duplicates.
diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb
index d83c2e92ba..788bc77620 100644
--- a/railties/test/railties/engine_test.rb
+++ b/railties/test/railties/engine_test.rb
@@ -84,11 +84,13 @@ module RailtiesTest
end
RUBY
- boot_rails
+ app_file "config/routes.rb", <<-RUBY
+ AppTemplate::Application.routes.draw do
+ mount(Bukkits::Engine => "/bukkits")
+ end
+ RUBY
- Rails.application.routes.draw do |map|
- mount(Bukkits::Engine => "/bukkits")
- end
+ boot_rails
env = Rack::MockRequest.env_for("/bukkits")
response = Rails.application.call(env)
@@ -104,15 +106,19 @@ module RailtiesTest
end
RUBY
- boot_rails
+ @plugin.write "config/routes.rb", <<-RUBY
+ Bukkits::Engine.routes.draw do
+ match "/foo" => lambda { |env| [200, {'Content-Type' => 'text/html'}, 'foo'] }
+ end
+ RUBY
- Bukkits::Engine.routes.draw do |map|
- match "/foo" => lambda { |env| [200, {'Content-Type' => 'text/html'}, 'foo'] }
- end
+ app_file "config/routes.rb", <<-RUBY
+ Rails.application.routes.draw do
+ mount(Bukkits::Engine => "/bukkits")
+ end
+ RUBY
- Rails.application.routes.draw do |map|
- mount(Bukkits::Engine => "/bukkits")
- end
+ boot_rails
env = Rack::MockRequest.env_for("/bukkits/foo")
response = Rails.application.call(env)
@@ -205,7 +211,6 @@ module RailtiesTest
@plugin.write "lib/bukkits.rb", <<-RUBY
class Bukkits
class Engine < ::Rails::Engine
- config.asset_path = "/bukkits%s"
end
end
RUBY
@@ -247,8 +252,17 @@ module RailtiesTest
add_to_config 'config.asset_path = "/omg%s"'
+ @plugin.write 'public/touch.txt', <<-RUBY
+ touch
+ RUBY
+
boot_rails
+ # should set asset_path with engine name by default
+ assert_equal "/bukkits_engine%s", ::Bukkits::Engine.config.asset_path
+
+ ::Bukkits::Engine.config.asset_path = "/bukkits%s"
+
env = Rack::MockRequest.env_for("/foo")
response = Bukkits::Engine.call(env)
stripped_body = response[2].body.split("\n").map(&:strip).join("\n")
@@ -258,7 +272,6 @@ module RailtiesTest
"<script src=\"/omg/bukkits/javascripts/foo.js\" type=\"text/javascript\"></script>\n" +
"<link href=\"/omg/bukkits/stylesheets/foo.css\" media=\"screen\" rel=\"stylesheet\" type=\"text/css\" />"
assert_equal expected, stripped_body
-
end
end
end