journaled 5.1.1 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4d27e8931e64963620ecd1fd44c4a46c244470a6715dc19c56a7a1a29aaa97b6
4
- data.tar.gz: f95df32775abd3f65cb8d526c60fae948fc69425957a378e4007765fdade14c0
3
+ metadata.gz: 677d0f45ee5a62e362e5889cfee0745e6645be394617b60585302ccbf28099a0
4
+ data.tar.gz: 30c02276b17d9cfce2534f530806b2b037c42e0b3708ef0d10b194f295f09e74
5
5
  SHA512:
6
- metadata.gz: 1cd4a144b2cc6dbb398b082dfe97b93829ab5d0e2ad7c22fb807ff63be9d9f5e1b24278db14eb947ce247c92f8fd09e135010ce9bc546e6e34589f98fdccaeb9
7
- data.tar.gz: 10da7fde07cfe2e7d654978a99c0734976f7199efd1d1d5e6aa11684d30d537d625acf238e0f636f8dec75b298920a8bf3f64a8c41105ddab40f624b03f1e8d6
6
+ metadata.gz: a8b5fb2a36241ea80bfe6f07965fe048e9b5f246ff71e77c61259d78f9739e41b20a3dcf669a2ab1514169c95e01d2b8e21ac885beaa943243b6abc2ad673deb
7
+ data.tar.gz: 65baecc64ef3f99fae2e45e5133ec844cf16fcaad2463b103d8d03ad95eb32de52bde0341a58c07c65a25935359e80913806d68b12cea2de74f48517ce2d177a
data/README.md CHANGED
@@ -345,6 +345,15 @@ Journaled::AuditLog.with_snapshots do
345
345
  end
346
346
  ```
347
347
 
348
+ Snapshots can also be enabled globally for all _deletion_ operations. Since
349
+ `changes` will be empty on deletion, you should consider using this if you care
350
+ about the contents of any records being deleted (and/or don't have a full audit
351
+ trail from their time of creation):
352
+
353
+ ```ruby
354
+ Journaled::AuditLog.snapshot_on_deletion = true
355
+ ```
356
+
348
357
  Events with snapshots will continue to populate the `changes` field, but will
349
358
  additionally contain a snapshot with the full state of the user:
350
359
 
@@ -673,6 +682,14 @@ This feature can be disabled conditionally:
673
682
  Journaled.transactional_batching_enabled = false
674
683
  ```
675
684
 
685
+ And can then be enabled via the following block:
686
+
687
+ ```ruby
688
+ Journaled.with_transactional_batching do
689
+ # your code
690
+ end
691
+ ```
692
+
676
693
  Backwards compatibility has been included for background jobs enqueued by
677
694
  version 4.0 and above, but **has been dropped for jobs emitted by versions prior
678
695
  to 4.0**. (Again, be sure to upgrade only one major version at a time.)
@@ -58,7 +58,8 @@ module Journaled
58
58
  end
59
59
 
60
60
  def snapshot
61
- filtered_attributes if record._log_snapshot || AuditLog.snapshots_enabled
61
+ filtered_attributes if record._log_snapshot || AuditLog.snapshots_enabled ||
62
+ (database_operation == 'delete' && AuditLog.snapshot_on_deletion)
62
63
  end
63
64
 
64
65
  def actor
@@ -18,6 +18,7 @@ module Journaled
18
18
  mattr_accessor(:default_enqueue_opts) { {} }
19
19
  mattr_accessor(:excluded_classes) { DEFAULT_EXCLUDED_CLASSES.dup }
20
20
  thread_mattr_accessor(:snapshots_enabled) { false }
21
+ thread_mattr_accessor(:snapshot_on_deletion) { false }
21
22
  thread_mattr_accessor(:_disabled) { false }
22
23
  thread_mattr_accessor(:_force) { false }
23
24
 
@@ -82,7 +83,7 @@ module Journaled
82
83
 
83
84
  def dup
84
85
  super.tap do |config|
85
- config.ignored_columns = ignored_columns.dup
86
+ config.ignored_columns = ignored_columns.dup # rubocop:disable Rails/IgnoredColumnsAssignment
86
87
  config.enqueue_opts = enqueue_opts.dup
87
88
  end
88
89
  end
@@ -2,11 +2,11 @@ module Journaled
2
2
  module Connection
3
3
  class << self
4
4
  def available?
5
- Journaled.transactional_batching_enabled && transaction_open?
5
+ Journaled.transactional_batching_enabled? && transaction_open?
6
6
  end
7
7
 
8
8
  def stage!(event)
9
- raise TransactionSafetyError, <<~MSG unless transaction_open?
9
+ raise TransactionSafetyError, <<~MSG unless available?
10
10
  Transaction not available! By default, journaled event batching requires an open database transaction.
11
11
  MSG
12
12
 
@@ -1,3 +1,3 @@
1
1
  module Journaled
2
- VERSION = "5.1.1".freeze
2
+ VERSION = "5.3.0".freeze
3
3
  end
data/lib/journaled.rb CHANGED
@@ -16,7 +16,19 @@ module Journaled
16
16
  mattr_accessor(:http_open_timeout) { 2 }
17
17
  mattr_accessor(:http_read_timeout) { 60 }
18
18
  mattr_accessor(:job_base_class_name) { 'ActiveJob::Base' }
19
- mattr_accessor(:transactional_batching_enabled) { true }
19
+ mattr_writer(:transactional_batching_enabled) { true }
20
+
21
+ def self.transactional_batching_enabled?
22
+ Thread.current[:journaled_transactional_batching_enabled] || @@transactional_batching_enabled
23
+ end
24
+
25
+ def self.with_transactional_batching
26
+ value_was = Thread.current[:journaled_transactional_batching_enabled]
27
+ Thread.current[:journaled_transactional_batching_enabled] = true
28
+ yield
29
+ ensure
30
+ Thread.current[:journaled_transactional_batching_enabled] = value_was
31
+ end
20
32
 
21
33
  def self.development_or_test?
22
34
  %w(development test).include?(Rails.env)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: journaled
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.1
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Lipson
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2022-09-16 00:00:00.000000000 Z
14
+ date: 2022-12-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activejob