recorder 1.2.1 → 1.2.3
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 +4 -4
- data/.gitignore +1 -0
- data/lib/recorder/observer.rb +6 -4
- data/lib/recorder/revision.rb +13 -12
- data/lib/recorder/sidekiq/revisions_worker.rb +2 -1
- data/lib/recorder/tape/data.rb +14 -6
- data/lib/recorder/tape/record.rb +4 -1
- data/lib/recorder/tape.rb +4 -4
- data/lib/recorder/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 807b7bea0674cab9a3a39b1fa03f78a62f0313650bb7adf51860a98257273186
|
|
4
|
+
data.tar.gz: 175315c3c23acef56bd6f9545681b7525eb41a11cadacf5e671dd197352f31d2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8eb1a672f08d66c265f6d1b1dffd8d65703b4359f789febb42846f4bb0d89d860c49ffb383b78bd57f3bfefeb349fac6abd7ed8ecc890a22ffc45886087c91b7
|
|
7
|
+
data.tar.gz: b65ed4fc4d7fea8a5d442f301789e497d538fa57447a320328f89650e9c65f8773d7247c68e303d49cdbda5977786fb64a8841c1cb5ba65a1aaa638ce9f63a3c
|
data/.gitignore
CHANGED
data/lib/recorder/observer.rb
CHANGED
|
@@ -21,11 +21,13 @@ module Recorder
|
|
|
21
21
|
recorder_dirty? && Recorder.store.recorder_enabled?
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
class_methods do
|
|
25
|
+
define_method :recorder_options do
|
|
26
|
+
@recorder_options ||= {}
|
|
27
|
+
end
|
|
28
|
+
|
|
25
29
|
def recorder(options = {})
|
|
26
|
-
|
|
27
|
-
options
|
|
28
|
-
end
|
|
30
|
+
@recorder_options = options
|
|
29
31
|
|
|
30
32
|
after_create do
|
|
31
33
|
Recorder::Tape.new(self).record_create if recorder_record?
|
data/lib/recorder/revision.rb
CHANGED
|
@@ -18,6 +18,7 @@ module Recorder
|
|
|
18
18
|
)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
belongs_to :item, polymorphic: true, inverse_of: :revisions
|
|
21
22
|
belongs_to :user
|
|
22
23
|
|
|
23
24
|
validates :item_type, presence: true
|
|
@@ -27,20 +28,20 @@ module Recorder
|
|
|
27
28
|
|
|
28
29
|
scope :ordered_by_created_at, -> { order(created_at: :desc) }
|
|
29
30
|
|
|
30
|
-
def item
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
# def item
|
|
32
|
+
# return @item if defined?(@item)
|
|
33
|
+
# return if item_id.nil?
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
# @item = item_type.classify.constantize.new(data['attributes'])
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
# if data['associations'].present?
|
|
38
|
+
# data['associations'].each do |name, association|
|
|
39
|
+
# @item.send("build_#{name}", association['attributes'])
|
|
40
|
+
# end
|
|
41
|
+
# end
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
end
|
|
43
|
+
# @item
|
|
44
|
+
# end
|
|
44
45
|
|
|
45
46
|
# Get changeset for an item
|
|
46
47
|
# @return [Recorder::Changeset]
|
|
@@ -75,7 +76,7 @@ module Recorder
|
|
|
75
76
|
# If `#recorder_changeset_class` method is not defined, then class name is generated as "#{class}Changeset"
|
|
76
77
|
# @api private
|
|
77
78
|
def changeset_class(object)
|
|
78
|
-
klass = defined?(Draper) && object.decorated? ? object.source.class : object.class
|
|
79
|
+
klass = (defined?(Draper) && object.decorated?) ? object.source.class : object.class
|
|
79
80
|
klass = klass.base_class
|
|
80
81
|
|
|
81
82
|
return klass.send(:recorder_changeset_class) if klass.respond_to?(:recorder_changeset_class)
|
data/lib/recorder/tape/data.rb
CHANGED
|
@@ -10,11 +10,13 @@ module Recorder
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def data_for(event, options = {})
|
|
13
|
-
{
|
|
13
|
+
data = {
|
|
14
14
|
**attributes_for(event, options),
|
|
15
15
|
**changes_for(event, options),
|
|
16
16
|
**associations_for(event, options)
|
|
17
17
|
}
|
|
18
|
+
|
|
19
|
+
record_changed?(data, event) ? data : {}
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
def attributes_for(_event, options)
|
|
@@ -22,11 +24,7 @@ module Recorder
|
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
def changes_for(event, options)
|
|
25
|
-
changes =
|
|
26
|
-
case event.to_sym
|
|
27
|
-
when :update
|
|
28
|
-
sanitize_attributes(item.saved_changes, options)
|
|
29
|
-
end
|
|
27
|
+
changes = sanitize_attributes(item.saved_changes, options)
|
|
30
28
|
|
|
31
29
|
changes.present? ? {changes: changes} : {}
|
|
32
30
|
end
|
|
@@ -78,6 +76,16 @@ module Recorder
|
|
|
78
76
|
end
|
|
79
77
|
end
|
|
80
78
|
end
|
|
79
|
+
|
|
80
|
+
def record_changed?(data, event)
|
|
81
|
+
event.to_sym != :update || data[:changes] || associations_changed?(data)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def associations_changed?(data)
|
|
85
|
+
return if data[:associations].nil?
|
|
86
|
+
|
|
87
|
+
data[:associations].any? { |name, association| association[:changes] }
|
|
88
|
+
end
|
|
81
89
|
end
|
|
82
90
|
end
|
|
83
91
|
end
|
data/lib/recorder/tape/record.rb
CHANGED
|
@@ -29,9 +29,12 @@ module Recorder
|
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def record_async(params, options)
|
|
32
|
+
params[:data] = params[:data].to_json
|
|
33
|
+
params[:action_date] = params[:action_date].to_s
|
|
34
|
+
|
|
32
35
|
Recorder::Sidekiq::RevisionsWorker.perform_in(
|
|
33
36
|
options[:delay] || 2.seconds,
|
|
34
|
-
|
|
37
|
+
params.stringify_keys
|
|
35
38
|
)
|
|
36
39
|
end
|
|
37
40
|
end
|
data/lib/recorder/tape.rb
CHANGED
|
@@ -19,19 +19,19 @@ module Recorder
|
|
|
19
19
|
def record_create
|
|
20
20
|
data = data_for(:create, recorder_options)
|
|
21
21
|
|
|
22
|
-
record(event:
|
|
22
|
+
record(event: 'create', data: data) if data.any?
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def record_update
|
|
26
26
|
data = data_for(:update, recorder_options)
|
|
27
27
|
|
|
28
|
-
record(event:
|
|
28
|
+
record(event: 'update', data: data) if data.any?
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def record_destroy
|
|
32
32
|
data = data_for(:destroy, recorder_options)
|
|
33
33
|
|
|
34
|
-
record(event:
|
|
34
|
+
record(event: 'destroy', data: data) if data.any?
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
protected
|
|
@@ -51,7 +51,7 @@ module Recorder
|
|
|
51
51
|
item_id: item.id,
|
|
52
52
|
**params
|
|
53
53
|
},
|
|
54
|
-
|
|
54
|
+
recorder_options
|
|
55
55
|
)
|
|
56
56
|
end
|
|
57
57
|
end
|
data/lib/recorder/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: recorder
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Igor Alexandrov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-04-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -206,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
206
206
|
- !ruby/object:Gem::Version
|
|
207
207
|
version: '0'
|
|
208
208
|
requirements: []
|
|
209
|
-
rubygems_version: 3.
|
|
209
|
+
rubygems_version: 3.4.6
|
|
210
210
|
signing_key:
|
|
211
211
|
specification_version: 4
|
|
212
212
|
summary: Rails model auditor
|