lib/action_policy/railtie.rb in action_policy-0.2.2 vs lib/action_policy/railtie.rb in action_policy-0.2.3
- old
+ new
@@ -23,10 +23,15 @@
# Define whether we want to specify `current_user` as
# the default authorization context in channels
attr_accessor :channel_authorize_current_user
+ # Define whether to cache namespaced policy resolution
+ # result (e.g. in controllers).
+ # Enabled only in production by default.
+ attr_accessor :namespace_cache_enabled
+
def cache_store=(store, *args)
if store.is_a?(Symbol)
store = ActiveSupport::Cache.lookup_store(
store, *args
)
@@ -38,24 +43,28 @@
self.auto_inject_into_controller = true
self.controller_authorize_current_user = true
self.auto_inject_into_channel = true
self.channel_authorize_current_user = true
+ self.namespace_cache_enabled = Rails.env.production?
end
config.action_policy = Config
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
require "action_policy/cache_middleware"
- app_middleware.use ActionPolicy::CacheMiddleware
+ app.middleware.use ActionPolicy::CacheMiddleware
end
end
config.to_prepare do |_app|
+ ActionPolicy::LookupChain.namespace_cache_enabled =
+ Rails.application.config.action_policy.namespace_cache_enabled
+
ActiveSupport.on_load(:action_controller) do
next unless Rails.application.config.action_policy.auto_inject_into_controller
ActionController::Base.include ActionPolicy::Controller