aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/application.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails/application.rb')
-rw-r--r--railties/lib/rails/application.rb36
1 files changed, 28 insertions, 8 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 050190cba6..9ef001c7d0 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -71,7 +71,7 @@ module Rails
attr_reader :reloaders
attr_writer :queue
- delegate :default_url_options, :default_url_options=, :to => :routes
+ delegate :default_url_options, :default_url_options=, to: :routes
def initialize
super
@@ -101,6 +101,14 @@ module Rails
routes_reloader.reload!
end
+
+ # Return the application's KeyGenerator
+ def key_generator
+ # number of iterations selected based on consultation with the google security
+ # team. Details at https://github.com/rails/rails/pull/6952#issuecomment-7661220
+ @key_generator ||= ActiveSupport::KeyGenerator.new(config.secret_token, iterations: 1000)
+ end
+
# Stores some of the Rails initial environment parameters which
# will be used by middlewares and engines to configure themselves.
# Currently stores:
@@ -121,7 +129,8 @@ module Rails
"action_dispatch.show_exceptions" => config.action_dispatch.show_exceptions,
"action_dispatch.show_detailed_exceptions" => config.consider_all_requests_local,
"action_dispatch.logger" => Rails.logger,
- "action_dispatch.backtrace_cleaner" => Rails.backtrace_cleaner
+ "action_dispatch.backtrace_cleaner" => Rails.backtrace_cleaner,
+ "action_dispatch.key_generator" => key_generator
})
end
@@ -189,11 +198,7 @@ module Rails
end
def queue #:nodoc:
- @queue ||= ActiveSupport::QueueContainer.new(build_queue)
- end
-
- def build_queue #:nodoc:
- config.queue.new
+ @queue ||= config.queue || ActiveSupport::Queue.new
end
def to_app #:nodoc:
@@ -281,7 +286,22 @@ module Rails
def default_middleware_stack #:nodoc:
ActionDispatch::MiddlewareStack.new.tap do |middleware|
app = self
- if rack_cache = config.action_controller.perform_caching && config.action_dispatch.rack_cache
+ if rack_cache = config.action_dispatch.rack_cache
+ begin
+ require 'rack/cache'
+ rescue LoadError => error
+ 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