acts_as_trackable 0.3.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2623637f234be4b6be06bec2a38947c891bd89cc3aba99eaced1736a6c040826
4
- data.tar.gz: 8a041906500d6d1cdb731d1a9bf3a159c8ce9f987f473c5e28c91f3b8862308e
3
+ metadata.gz: 4a975a42cae75ef062b666c6c5aaf7ecad600fabf7b57120c2b92dc56cd2b54b
4
+ data.tar.gz: 42b577c33c5c3222e3052d0707b917ef58fae55332b942c1fde481a4d1e29eea
5
5
  SHA512:
6
- metadata.gz: 728468a85b94691918746d04944ed394dc36300fe8d088570c62194c55576fcc3c763bcd4f162a9a2077a8552641e8b082e86d599c8ea319aa99818747c7ab45
7
- data.tar.gz: ca898ee6035174aa73d020a39ce32151e1eadc04c6546eacb2b571fd58ab6b175c39063ab40d3fe3c22370ada606848e52cfda8b0d1f6b1e003e73d790dac45a
6
+ metadata.gz: d67973495783cff8a3ea0822e6897bc7cbfed2f01000aca90322fc56a28417677a562517f24c04584d0c352f10eaf2527aeabcc0734595796347d975c27659d3
7
+ data.tar.gz: dcf39756dea90601213e8528b86450eb77833b979f9392c02d57bcc10d2e04d53eba7a1d329926caaa52dd7b105d4167038f6aee2edf6e1ce4d9d719c27b03e8
data/changelog.md CHANGED
@@ -1,4 +1,8 @@
1
1
  # acts_as_trackable Changelog
2
+ ## Version: 0.4.0
3
+ ### Minor
4
+ - Performance Improvement: The `object_activity` method now memoizes results.
5
+ - Migration Required: Replace `Preloader` calls with `includes(:object_activity)` for bulk loading.
2
6
  ## Version: 0.3.5
3
7
  ### Patch
4
8
  - Upgraded dependencies to patch CVE-2022-44571
@@ -9,9 +9,27 @@ module Trackable
9
9
  has_one :object_activity, as: :object, dependent: :destroy
10
10
 
11
11
  define_method :object_activity do
12
- ObjectActivity.find_by('object_id = ? AND (object_type = ? OR object_type = ?)', id, self.class.name, self.class.base_class.name)
12
+ # Return cached value if already set
13
+ return @object_activity if defined?(@object_activity)
14
+
15
+ # If the association is preloaded use it
16
+ if association(:object_activity).loaded?
17
+ loaded = association(:object_activity).target
18
+
19
+ if loaded&.object_id == id &&
20
+ [self.class.name, self.class.base_class.name].include?(loaded.object_type)
21
+ @object_activity = loaded
22
+ end
23
+ end
24
+
25
+ # Fallback to DB query if not preloaded or not matched
26
+ @object_activity ||= ObjectActivity.find_by(
27
+ object_id: id,
28
+ object_type: [self.class.name, self.class.base_class.name]
29
+ )
13
30
  end
14
31
 
32
+
15
33
  delegate :created_by, :updated_by, to: :object_activity, allow_nil: true
16
34
 
17
35
  after_commit :log_object_activity, on: %i[create update], if: -> { modifier.present? }
@@ -1,3 +1,3 @@
1
1
  module ActsAsTrackable
2
- VERSION = '0.3.5'.freeze
2
+ VERSION = '0.4.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_trackable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmad Keewan
8
8
  - ZenHR Engineering
9
- autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2025-06-13 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: generator_spec
@@ -66,7 +65,6 @@ metadata:
66
65
  homepage_uri: https://www.zenhr.com
67
66
  source_code_uri: https://github.com/a-keewan/acts_as_trackable
68
67
  changelog_uri: https://github.com/a-keewan/acts_as_trackable/blob/master/changelog.md
69
- post_install_message:
70
68
  rdoc_options: []
71
69
  require_paths:
72
70
  - lib
@@ -81,8 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
79
  - !ruby/object:Gem::Version
82
80
  version: '0'
83
81
  requirements: []
84
- rubygems_version: 3.3.7
85
- signing_key:
82
+ rubygems_version: 3.6.9
86
83
  specification_version: 4
87
84
  summary: ActsAsTrackable is a RoR gem that simplifies tracking the creation and modification
88
85
  of database objects. It provides easy-to-use methods to make any ActiveRecord model