aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-04-08 12:52:37 +0200
committerJosé Valim <jose.valim@gmail.com>2010-04-08 12:52:37 +0200
commit4e92134dfa15ae198c714b85376838ffec5a7773 (patch)
tree043a10da476019c7cb53934eb40326ea8a57b34e /railties
parent336cb3c0bf3d38400f6c774ca78376117b899985 (diff)
downloadrails-4e92134dfa15ae198c714b85376838ffec5a7773.tar.gz
rails-4e92134dfa15ae198c714b85376838ffec5a7773.tar.bz2
rails-4e92134dfa15ae198c714b85376838ffec5a7773.zip
Fix a bug in ActionDispatch::Static where Rails cannot find assets if started in another directory which is not the RAILS_ROOT.
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails.rb5
-rw-r--r--railties/lib/rails/application/configuration.rb2
-rw-r--r--railties/test/application/configuration_test.rb9
3 files changed, 13 insertions, 3 deletions
diff --git a/railties/lib/rails.rb b/railties/lib/rails.rb
index 085b82c154..0611b2a9f5 100644
--- a/railties/lib/rails.rb
+++ b/railties/lib/rails.rb
@@ -92,11 +92,12 @@ module Rails
end
def public_path
- @@public_path ||= self.root ? File.join(self.root, "public") : "public"
+ application && application.paths.public.to_a.first
end
def public_path=(path)
- @@public_path = path
+ ActiveSupport::Deprecation.warn "Setting Rails.public_path= is deprecated. " <<
+ "Please set paths.public = in config/application.rb instead.", caller
end
end
end
diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb
index f9f47ef679..7ce3494fa6 100644
--- a/railties/lib/rails/application/configuration.rb
+++ b/railties/lib/rails/application/configuration.rb
@@ -137,7 +137,7 @@ module Rails
def default_middleware_stack
ActionDispatch::MiddlewareStack.new.tap do |middleware|
- middleware.use('::ActionDispatch::Static', lambda { Rails.public_path }, :if => lambda { serve_static_assets })
+ middleware.use('::ActionDispatch::Static', lambda { paths.public.to_a.first }, :if => lambda { serve_static_assets })
middleware.use('::Rack::Lock', :if => lambda { !allow_concurrency })
middleware.use('::Rack::Runtime')
middleware.use('::Rails::Rack::Logger')
diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb
index 97d5f64708..8bf0f09d6b 100644
--- a/railties/test/application/configuration_test.rb
+++ b/railties/test/application/configuration_test.rb
@@ -184,6 +184,15 @@ module ApplicationTests
end
end
+ test "config.paths.public sets Rails.public_path" do
+ add_to_config <<-RUBY
+ config.paths.public = "somewhere"
+ RUBY
+
+ require "#{app_path}/config/application"
+ assert_equal File.join(app_path, "somewhere"), Rails.public_path
+ end
+
def make_basic_app
require "rails"
require "action_controller/railtie"