recorder 1.2.1 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|