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