changed 1.2.0 → 2.0.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: 53782f67f91f94fb6371707c6898b36e531ca972ce8d9fe404089b9983d91740
4
- data.tar.gz: d7d9968239f4e0a1c857abf6fd1aeb8938630d04a814927f7213de8cdceb2282
3
+ metadata.gz: a624358bc74adfc4ce845ae502cc8a573c2ef90c8f070eaeb196d978c641996b
4
+ data.tar.gz: 72a7e53ffc9530e7d1d28f5616716e491f8bb9d35e9c48a399c5929c9ac87a60
5
5
  SHA512:
6
- metadata.gz: 06473d2413c6f76544c63eced68807389cae2ce1dbea1024fc5b9e8a2c7856088ed0b90074b8d8a528b08a70be24c1ba34cc652397e07fcb37c317787026f331
7
- data.tar.gz: e3d4a686dc92c98adcd378f66948645aca010e68555ff282e3d9891c6a91cc8065983b3e23462980fbd1af2af40823f06d33337ea71ccc1591c0a75bbe9449f6
6
+ metadata.gz: c7daffb97f36da1931a52d6c6536d2c8221d959c73941e6a72585f6f24a1121615fb64d03d6f2457532a4d0f1b001fffc1a04a0e20f54db65fd52e03352cd0ee
7
+ data.tar.gz: e272cf28d5f7b674c69411ad5984589caf47e2216576d005412ef8397f631a5dbf487a5894f3e2ca2a10d39f5f81a68d0ec3d10df155ce17f516df443d649415
@@ -3,7 +3,7 @@ module Changed
3
3
  belongs_to :audit, class_name: 'Changed::Audit'
4
4
  belongs_to :associated, polymorphic: true
5
5
 
6
- enum kind: %i[add remove]
6
+ enum :kind, %i[add remove]
7
7
 
8
8
  validates :name, presence: true
9
9
 
@@ -24,7 +24,7 @@ module Changed
24
24
 
25
25
  scope :for, ->(audited) { where(audited: audited).ordered }
26
26
 
27
- after_initialize -> { self.timestamp ||= (Changed.timestamp || Time.now) }
27
+ after_initialize -> { self.timestamp ||= Changed.timestamp || Time.now }
28
28
 
29
29
  def fields
30
30
  changeset.map do |name, value|
@@ -1,5 +1,5 @@
1
1
  module Changed
2
- class Builder
2
+ class Builder # rubocop:disable Metrics/ClassLength
3
3
  class ArgumentError < ::ArgumentError
4
4
  end
5
5
 
@@ -88,6 +88,10 @@ module Changed
88
88
 
89
89
  def define_callbacks_for_has_many(association)
90
90
  name = association.name
91
+
92
+ # Ensure callback arrays exist before appending to them
93
+ initialize_association_callbacks(association.name)
94
+
91
95
  @klass.send(:"before_add_for_#{association.name}") << before_add_for_has_many_callback(name)
92
96
  @klass.send(:"before_remove_for_#{association.name}") << before_remove_for_has_many_callback(name)
93
97
  end
@@ -96,6 +100,26 @@ module Changed
96
100
  raise ArgumentError, "unsupported reflection '#{association.name}'"
97
101
  end
98
102
 
103
+ def initialize_association_callbacks(association_name)
104
+ # Initialize callback arrays if they don't exist
105
+ before_add_callback_name = :"before_add_for_#{association_name}"
106
+ before_remove_callback_name = :"before_remove_for_#{association_name}"
107
+
108
+ # rubocop:disable Style/GuardClause
109
+ unless @klass.respond_to?(before_add_callback_name)
110
+ @klass.class_eval do
111
+ class_attribute before_add_callback_name, instance_writer: false, default: []
112
+ end
113
+ end
114
+
115
+ unless @klass.respond_to?(before_remove_callback_name)
116
+ @klass.class_eval do
117
+ class_attribute before_remove_callback_name, instance_writer: false, default: []
118
+ end
119
+ end
120
+ # rubocop:enable Style/GuardClause
121
+ end
122
+
99
123
  def define_after_create_callback
100
124
  keys = @keys
101
125
  @klass.after_create do |resource|
@@ -1,3 +1,3 @@
1
1
  module Changed
2
- VERSION = '1.2.0'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: changed
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Sylvestre
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-20 00:00:00.000000000 Z
11
+ date: 2025-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 7.1.5.1
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '9.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: '0'
29
+ version: 7.1.5.1
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '9.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: request_store
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -203,23 +209,23 @@ homepage: https://github.com/clutter/changed
203
209
  licenses:
204
210
  - MIT
205
211
  metadata: {}
206
- post_install_message:
212
+ post_install_message:
207
213
  rdoc_options: []
208
214
  require_paths:
209
215
  - lib
210
216
  required_ruby_version: !ruby/object:Gem::Requirement
211
217
  requirements:
212
- - - ">"
218
+ - - ">="
213
219
  - !ruby/object:Gem::Version
214
- version: 2.6.0
220
+ version: 3.0.0
215
221
  required_rubygems_version: !ruby/object:Gem::Requirement
216
222
  requirements:
217
223
  - - ">="
218
224
  - !ruby/object:Gem::Version
219
225
  version: '0'
220
226
  requirements: []
221
- rubygems_version: 3.0.3
222
- signing_key:
227
+ rubygems_version: 3.4.10
228
+ signing_key:
223
229
  specification_version: 4
224
230
  summary: Provides insights into what changed.
225
231
  test_files: []