mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
23b6a9c0fc
Per request digest caches were added before we had hooks into different units of work that Rails performs. As such the most reliable way to prevent stale cache digests was with a middleware. The middleware prevented staleness in Action Controller requests. However, the executor is superior because it should also prevent staleness when running just Active Job jobs or broadcasting through Action Cable's server.
64 lines
2 KiB
Ruby
64 lines
2 KiB
Ruby
require "action_view"
|
|
require "rails"
|
|
|
|
module ActionView
|
|
# = Action View Railtie
|
|
class Railtie < Rails::Railtie # :nodoc:
|
|
config.action_view = ActiveSupport::OrderedOptions.new
|
|
config.action_view.embed_authenticity_token_in_remote_forms = false
|
|
config.action_view.debug_missing_translation = true
|
|
|
|
config.eager_load_namespaces << ActionView
|
|
|
|
initializer "action_view.embed_authenticity_token_in_remote_forms" do |app|
|
|
ActiveSupport.on_load(:action_view) do
|
|
ActionView::Helpers::FormTagHelper.embed_authenticity_token_in_remote_forms =
|
|
app.config.action_view.delete(:embed_authenticity_token_in_remote_forms)
|
|
end
|
|
end
|
|
|
|
initializer "action_view.logger" do
|
|
ActiveSupport.on_load(:action_view) { self.logger ||= Rails.logger }
|
|
end
|
|
|
|
initializer "action_view.set_configs" do |app|
|
|
ActiveSupport.on_load(:action_view) do
|
|
app.config.action_view.each do |k,v|
|
|
send "#{k}=", v
|
|
end
|
|
end
|
|
end
|
|
|
|
initializer "action_view.caching" do |app|
|
|
ActiveSupport.on_load(:action_view) do
|
|
if app.config.action_view.cache_template_loading.nil?
|
|
ActionView::Resolver.caching = app.config.cache_classes
|
|
end
|
|
end
|
|
end
|
|
|
|
initializer "action_view.per_request_digest_cache" do |app|
|
|
ActiveSupport.on_load(:action_view) do
|
|
if app.config.consider_all_requests_local
|
|
app.executor.to_run { ActionView::LookupContext::DetailsKey.clear }
|
|
end
|
|
end
|
|
end
|
|
|
|
initializer "action_view.setup_action_pack" do |app|
|
|
ActiveSupport.on_load(:action_controller) do
|
|
ActionView::RoutingUrlFor.include(ActionDispatch::Routing::UrlFor)
|
|
end
|
|
end
|
|
|
|
initializer "action_view.collection_caching", after: "action_controller.set_configs" do |app|
|
|
PartialRenderer.collection_cache = app.config.action_controller.cache_store
|
|
end
|
|
|
|
rake_tasks do |app|
|
|
unless app.config.api_only
|
|
load "action_view/tasks/cache_digests.rake"
|
|
end
|
|
end
|
|
end
|
|
end
|