aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2012-10-04 19:58:19 -0700
committerSantiago Pastorino <santiago@wyeworks.com>2012-10-04 19:58:19 -0700
commita8c8a08f1ae7099f750058ef3e168810e5ad47d8 (patch)
tree2f7392d0efa7e32c2500b0a9d3a95e81e0e639f4
parent4b33bbc80374e486467f9a7b76e34e4ab2ce0b50 (diff)
parentab4c079536641e63ca51b6121864a75de7145256 (diff)
downloadrails-a8c8a08f1ae7099f750058ef3e168810e5ad47d8.tar.gz
rails-a8c8a08f1ae7099f750058ef3e168810e5ad47d8.tar.bz2
rails-a8c8a08f1ae7099f750058ef3e168810e5ad47d8.zip
Merge pull request #7838 from guilleiguaran/extract-rack-cache
Disable Rack::Cache by default
-rw-r--r--actionpack/CHANGELOG.md10
-rw-r--r--actionpack/lib/action_dispatch/railtie.rb7
-rw-r--r--railties/lib/rails/application.rb9
-rw-r--r--railties/lib/rails/generators/rails/app/templates/Gemfile2
-rw-r--r--railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt5
-rw-r--r--railties/test/application/middleware_test.rb11
6 files changed, 33 insertions, 11 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md
index f07c6fe828..df93bb3d27 100644
--- a/actionpack/CHANGELOG.md
+++ b/actionpack/CHANGELOG.md
@@ -1,5 +1,10 @@
## Rails 4.0.0 (unreleased) ##
+* The `Rack::Cache` middleware is now disabled by default. To enable it,
+ set `config.action_dispatch.rack_cache = true` and add `gem rack-cache` to your Gemfile.
+
+ *Guillermo Iguaran*
+
* `ActionController::Base.page_cache_extension` option is deprecated
in favour of `ActionController::Base.default_static_extension`.
@@ -13,10 +18,9 @@
* Failsafe exception returns text/plain. *Steve Klabnik*
-* Remove actionpack's rack-cache dependency and declare the
- dependency in the Gemfile.
+* Remove `rack-cache` dependency from Action Pack and declare it on Gemfile
- *Guillermo IguarĂ¡n*
+ *Guillermo Iguaran*
* Rename internal variables on ActionController::TemplateAssertions to prevent
naming collisions. @partials, @templates and @layouts are now prefixed with an underscore.
diff --git a/actionpack/lib/action_dispatch/railtie.rb b/actionpack/lib/action_dispatch/railtie.rb
index ccc0435a39..284dd180db 100644
--- a/actionpack/lib/action_dispatch/railtie.rb
+++ b/actionpack/lib/action_dispatch/railtie.rb
@@ -12,12 +12,7 @@ module ActionDispatch
config.action_dispatch.rescue_templates = { }
config.action_dispatch.rescue_responses = { }
config.action_dispatch.default_charset = nil
-
- config.action_dispatch.rack_cache = {
- :metastore => "rails:/",
- :entitystore => "rails:/",
- :verbose => false
- }
+ config.action_dispatch.rack_cache = false
config.action_dispatch.default_headers = {
'X-Frame-Options' => 'SAMEORIGIN',
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index c8a6600da9..b30e6ff615 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -297,6 +297,15 @@ module Rails
error.message << ' Be sure to add rack-cache to your Gemfile'
raise
end
+
+ if rack_cache == true
+ rack_cache = {
+ :metastore => "rails:/",
+ :entitystore => "rails:/",
+ :verbose => false
+ }
+ end
+
require "action_dispatch/http/rack_cache"
middleware.use ::Rack::Cache, rack_cache
end
diff --git a/railties/lib/rails/generators/rails/app/templates/Gemfile b/railties/lib/rails/generators/rails/app/templates/Gemfile
index f58542653c..e5aa153e29 100644
--- a/railties/lib/rails/generators/rails/app/templates/Gemfile
+++ b/railties/lib/rails/generators/rails/app/templates/Gemfile
@@ -10,7 +10,7 @@ source 'https://rubygems.org'
<%= javascript_gemfile_entry %>
# Puts a simple HTTP cache in front of your app (and gets you ready for later upgrading to nginx/varnish/squid)
-gem 'rack-cache', '~> 1.2'
+# gem 'rack-cache', '~> 1.2'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
diff --git a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt
index cb3e8b123e..3629920c30 100644
--- a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt
+++ b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt
@@ -14,6 +14,11 @@
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
+ # Enable Rack::Cache to put a simple HTTP cache in front of your application
+ # Add `rack-cache` to your Gemfile before enabling this.
+ # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
+ # config.action_dispatch.rack_cache = true
+
# Disable Rails's static asset server (Apache or nginx will already do this).
config.serve_static_assets = false
diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb
index 3e096e99f2..b2443e6503 100644
--- a/railties/test/application/middleware_test.rb
+++ b/railties/test/application/middleware_test.rb
@@ -56,11 +56,20 @@ module ApplicationTests
assert !middleware.include?("Rack::Sendfile"), "Rack::Sendfile is not included in the default stack unless you set config.action_dispatch.x_sendfile_header"
end
- test "Rack::Cache is present when action_controller.perform_caching is set" do
+ test "Rack::Cache is not included by default" do
add_to_config "config.action_controller.perform_caching = true"
boot!
+ assert !middleware.include?("Rack::Cache"), "Rack::Cache is not included in the default stack unless you set config.action_dispatch.rack_cache"
+ end
+
+ test "Rack::Cache is present when action_controller.perform_caching is set and action_dispatch.rack_cache is set" do
+ add_to_config "config.action_controller.perform_caching = true"
+ add_to_config "config.action_dispatch.rack_cache = true"
+
+ boot!
+
assert_equal "Rack::Cache", middleware.first
end