changed 1.2.0 → 2.0.1

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: daa8d614173374406f3cddc3224a1f3edb39c3d1778e718d2e4c0bf7c12f0fc4
4
+ data.tar.gz: 6d8b103a1521bdaba87277d75a1502e595d40cebd012f3df21bd87f69cf7060b
5
5
  SHA512:
6
- metadata.gz: 06473d2413c6f76544c63eced68807389cae2ce1dbea1024fc5b9e8a2c7856088ed0b90074b8d8a528b08a70be24c1ba34cc652397e07fcb37c317787026f331
7
- data.tar.gz: e3d4a686dc92c98adcd378f66948645aca010e68555ff282e3d9891c6a91cc8065983b3e23462980fbd1af2af40823f06d33337ea71ccc1591c0a75bbe9449f6
6
+ metadata.gz: d93bccbf7daa7e1fa0c9f7d8458a470588d1d2e737a7e5b5d0cbb8dc73b20539af502bc8336231b60c0507f9fadfd0d7b27d9bdedf8d2efa9999f99126ecab19
7
+ data.tar.gz: b845f1c0b28e3847180ab8956e58df0bb1e909a5e073973be9e95c5093b139cfc065260e193fdd2aecbf59ef8b496dd9255aebc75228d7e24f20d05089ee187e
@@ -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.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,13 @@
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.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Sylvestre
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2020-10-20 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rails
@@ -16,14 +15,20 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '0'
18
+ version: 7.1.5.1
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '9.0'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
23
25
  requirements:
24
26
  - - ">="
25
27
  - !ruby/object:Gem::Version
26
- version: '0'
28
+ version: 7.1.5.1
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '9.0'
27
32
  - !ruby/object:Gem::Dependency
28
33
  name: request_store
29
34
  requirement: !ruby/object:Gem::Requirement
@@ -203,23 +208,21 @@ homepage: https://github.com/clutter/changed
203
208
  licenses:
204
209
  - MIT
205
210
  metadata: {}
206
- post_install_message:
207
211
  rdoc_options: []
208
212
  require_paths:
209
213
  - lib
210
214
  required_ruby_version: !ruby/object:Gem::Requirement
211
215
  requirements:
212
- - - ">"
216
+ - - ">="
213
217
  - !ruby/object:Gem::Version
214
- version: 2.6.0
218
+ version: 3.0.0
215
219
  required_rubygems_version: !ruby/object:Gem::Requirement
216
220
  requirements:
217
221
  - - ">="
218
222
  - !ruby/object:Gem::Version
219
223
  version: '0'
220
224
  requirements: []
221
- rubygems_version: 3.0.3
222
- signing_key:
225
+ rubygems_version: 3.7.1
223
226
  specification_version: 4
224
227
  summary: Provides insights into what changed.
225
228
  test_files: []