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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e0c1a0c2e47411273ae9c9ac9a8e285138a9c1db2013c606a32749fc869f1ef
4
- data.tar.gz: bbfa653c96171b63dfa0b974c59cf7d6fad3d59c9b7e6454cf1b9cacf64e16b7
3
+ metadata.gz: 807b7bea0674cab9a3a39b1fa03f78a62f0313650bb7adf51860a98257273186
4
+ data.tar.gz: 175315c3c23acef56bd6f9545681b7525eb41a11cadacf5e671dd197352f31d2
5
5
  SHA512:
6
- metadata.gz: 1607e4d11cdefe2dd50f8c7966018e4da2f068e894e148edf41b4e6816b720a1ec40a80b91c2a6c9095901bf610a99028f8c11c53dcb235340799067142b7bcd
7
- data.tar.gz: 14f9ffe74d69077e3db56284e9dd15f7c304932de173eed0ffaceb85a3a5ea16fdcb71b74b0dc982afa1aabd0df73d8919deb782f7011313ccf2d2f8e958f925
6
+ metadata.gz: 8eb1a672f08d66c265f6d1b1dffd8d65703b4359f789febb42846f4bb0d89d860c49ffb383b78bd57f3bfefeb349fac6abd7ed8ecc890a22ffc45886087c91b7
7
+ data.tar.gz: b65ed4fc4d7fea8a5d442f301789e497d538fa57447a320328f89650e9c65f8773d7247c68e303d49cdbda5977786fb64a8841c1cb5ba65a1aaa638ce9f63a3c
data/.gitignore CHANGED
@@ -9,6 +9,7 @@
9
9
  /tmp/
10
10
 
11
11
  /spec/dummy/config/database.yml
12
+ /spec/dummy/log/*
12
13
 
13
14
  # Ignore vim swap files
14
15
  *.swp
@@ -21,11 +21,13 @@ module Recorder
21
21
  recorder_dirty? && Recorder.store.recorder_enabled?
22
22
  end
23
23
 
24
- module ClassMethods
24
+ class_methods do
25
+ define_method :recorder_options do
26
+ @recorder_options ||= {}
27
+ end
28
+
25
29
  def recorder(options = {})
26
- define_method :recorder_options do
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?
@@ -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
- return @item if defined?(@item)
32
- return if item_id.nil?
31
+ # def item
32
+ # return @item if defined?(@item)
33
+ # return if item_id.nil?
33
34
 
34
- @item = item_type.classify.constantize.new(data['attributes'])
35
+ # @item = item_type.classify.constantize.new(data['attributes'])
35
36
 
36
- if data['associations'].present?
37
- data['associations'].each do |name, association|
38
- @item.send("build_#{name}", association['attributes'])
39
- end
40
- end
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
- @item
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)
@@ -7,7 +7,8 @@ module Recorder
7
7
 
8
8
  sidekiq_options Recorder.config.sidekiq_options
9
9
 
10
- def perform(**params)
10
+ def perform(params)
11
+ params['data'] = JSON.parse(params['data'])
11
12
  Recorder::Revision.create(params)
12
13
  end
13
14
  end
@@ -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
@@ -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
- **params
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: :create, data: data) if data.any?
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: :update, data: data) if data.any?
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: :destroy, data: data) if data.any?
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
- item.recorder_options
54
+ recorder_options
55
55
  )
56
56
  end
57
57
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Recorder
4
- VERSION = '1.2.1'
4
+ VERSION = '1.2.3'
5
5
  end
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.1
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: 2022-11-16 00:00:00.000000000 Z
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.3.7
209
+ rubygems_version: 3.4.6
210
210
  signing_key:
211
211
  specification_version: 4
212
212
  summary: Rails model auditor