aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
Diffstat (limited to 'railties')
-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
4 files changed, 25 insertions, 2 deletions
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