From 194397fb9be05229163eb10353f61928d3cf9c63 Mon Sep 17 00:00:00 2001 From: Lucas Arnaud Date: Mon, 14 Apr 2025 16:04:31 -0300 Subject: [PATCH 1/2] feat: allow enable/disable Audit for all classes but only locally --- lib/audited.rb | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/audited.rb b/lib/audited.rb index 096959d7..4841183e 100644 --- a/lib/audited.rb +++ b/lib/audited.rb @@ -10,13 +10,12 @@ class RequestStore < ActiveSupport::CurrentAttributes class << self attr_accessor \ - :auditing_enabled, :current_user_method, :ignored_attributes, :ignored_default_callbacks, :max_audits, :store_synthesized_enums - attr_writer :audit_class + attr_writer :auditing_enabled, :audit_class def audit_class # The audit_class is set as String in the initializer. It can not be constantized during initialization and must @@ -34,6 +33,32 @@ def store RequestStore.audited_store ||= {} end + def auditing_enabled + store.key?(:auditing_enabled) ? store[:auditing_enabled] : @auditing_enabled + end + + def with_auditing + before_value_in_store = store.delete(:auditing_enabled) + store[:auditing_enabled] = true + + result = yield + + store[:auditing_enabled] = before_value_in_store unless before_value_in_store.nil? + + result + end + + def without_auditing + before_value_in_store = store.delete(:auditing_enabled) + store[:auditing_enabled] = false + + result = yield + + store[:auditing_enabled] = before_value_in_store unless before_value_in_store.nil? + + result + end + def config yield(self) end From 7ba4fb571e2da33780fb62618e06ff8afe57b361 Mon Sep 17 00:00:00 2001 From: Lucas Arnaud Date: Tue, 15 Apr 2025 15:52:49 -0300 Subject: [PATCH 2/2] feat: ensure audit enablement is restored even in case of error --- lib/audited.rb | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/audited.rb b/lib/audited.rb index 4841183e..b3196a91 100644 --- a/lib/audited.rb +++ b/lib/audited.rb @@ -41,9 +41,11 @@ def with_auditing before_value_in_store = store.delete(:auditing_enabled) store[:auditing_enabled] = true - result = yield - - store[:auditing_enabled] = before_value_in_store unless before_value_in_store.nil? + begin + result = yield + ensure + store[:auditing_enabled] = before_value_in_store unless before_value_in_store.nil? + end result end @@ -52,9 +54,11 @@ def without_auditing before_value_in_store = store.delete(:auditing_enabled) store[:auditing_enabled] = false - result = yield - - store[:auditing_enabled] = before_value_in_store unless before_value_in_store.nil? + begin + result = yield + ensure + store[:auditing_enabled] = before_value_in_store unless before_value_in_store.nil? + end result end