diff options
-rw-r--r-- | actionpack/lib/action_controller/caching/pages.rb | 4 | ||||
-rw-r--r-- | actionpack/lib/action_controller/metal/compatibility.rb | 2 | ||||
-rw-r--r-- | actionpack/lib/action_controller/railtie.rb | 6 | ||||
-rw-r--r-- | railties/lib/rails.rb | 5 | ||||
-rw-r--r-- | railties/lib/rails/application/configuration.rb | 2 | ||||
-rw-r--r-- | railties/test/application/configuration_test.rb | 9 |
6 files changed, 21 insertions, 7 deletions
diff --git a/actionpack/lib/action_controller/caching/pages.rb b/actionpack/lib/action_controller/caching/pages.rb index fe95f0e0d7..2a0a1107eb 100644 --- a/actionpack/lib/action_controller/caching/pages.rb +++ b/actionpack/lib/action_controller/caching/pages.rb @@ -38,22 +38,22 @@ module ActionController #:nodoc: extend ActiveSupport::Concern included do - @@page_cache_directory = defined?(Rails.public_path) ? Rails.public_path : "" ## # :singleton-method: # The cache directory should be the document root for the web server and is set using <tt>Base.page_cache_directory = "/document/root"</tt>. # For Rails, this directory has already been set to Rails.public_path (which is usually set to <tt>RAILS_ROOT + "/public"</tt>). Changing # this setting can be useful to avoid naming conflicts with files in <tt>public/</tt>, but doing so will likely require configuring your # web server to look in the new location for cached files. + @@page_cache_directory = '' cattr_accessor :page_cache_directory - @@page_cache_extension = '.html' ## # :singleton-method: # Most Rails requests do not have an extension, such as <tt>/weblog/new</tt>. In these cases, the page caching mechanism will add one in # order to make it easy for the cached files to be picked up properly by the web server. By default, this cache extension is <tt>.html</tt>. # If you want something else, like <tt>.php</tt> or <tt>.shtml</tt>, just set Base.page_cache_extension. In cases where a request already has an # extension, such as <tt>.xml</tt> or <tt>.rss</tt>, page caching will not add an extension. This allows it to work well with RESTful apps. + @@page_cache_extension = '.html' cattr_accessor :page_cache_extension end diff --git a/actionpack/lib/action_controller/metal/compatibility.rb b/actionpack/lib/action_controller/metal/compatibility.rb index e6cea483bb..02722360f1 100644 --- a/actionpack/lib/action_controller/metal/compatibility.rb +++ b/actionpack/lib/action_controller/metal/compatibility.rb @@ -32,8 +32,6 @@ module ActionController def rescue_action(env) raise env["action_dispatch.rescue.exception"] end - - self.page_cache_directory = defined?(Rails.public_path) ? Rails.public_path : "" end # For old tests diff --git a/actionpack/lib/action_controller/railtie.rb b/actionpack/lib/action_controller/railtie.rb index 030ba4ec48..b029434004 100644 --- a/actionpack/lib/action_controller/railtie.rb +++ b/actionpack/lib/action_controller/railtie.rb @@ -44,6 +44,12 @@ module ActionController ActiveSupport.on_load(:action_controller) { self.logger ||= Rails.logger } end + initializer "action_controller.page_cache_directory" do + ActiveSupport.on_load(:action_controller) do + self.page_cache_directory = Rails.public_path + end + end + initializer "action_controller.set_configs" do |app| paths = app.config.paths ac = app.config.action_controller 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" |