Ну, ответ заключается в использовании промежуточного ПО:
initializer "action_policy.clear_per_thread_cache" do |app|
if Rails::VERSION::MAJOR >= 5
app.executor.to_run { ActionPolicy::PerThreadCache.clear_all }
app.executor.to_complete { ActionPolicy::PerThreadCache.clear_all }
else
app.middleware.use ActionPolicy::Middleware
end
end
Вот промежуточное ПО:
# frozen_string_literal: true
module ActionPolicy # :nodoc:
class Middleware # :nodoc:
def initialize(app)
@app = app
end
def call(env)
ActionPolicy::PerThreadCache.clear_all
status, headers, response = @app.call(env)
ActionPolicy::PerThreadCache.clear_all
[status, headers, response]
end
end
end