logga 2.1.2 → 2.2.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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -1
  3. data/VERSION +1 -1
  4. data/lib/logga/active_record.rb +18 -11
  5. metadata +4 -102
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e701347d79260bff1bb8db40f220512a456720b66efa246de76dac9a9790bac2
4
- data.tar.gz: a8b56e341270752b63f5d1195232e0ac90972d3e66bf0368561b0775ea45e99d
3
+ metadata.gz: 175040125db02fd1bda317f34c45ea3bd45d003f07270c7e4f6942653a39967b
4
+ data.tar.gz: 737bfad69f886d068d83b99f8a574ffb52e18d6aeb8fa93e9efe9605e652918e
5
5
  SHA512:
6
- metadata.gz: 4991d4f6fb02cb56c5f3b952416fb2c58209eae7a84d65d8db9147b797cab1c40af9123d1be4e70a4b59a9d5a46247f7a1a913695558bf9d7641e76b1fcc38c0
7
- data.tar.gz: ccdd5e59e29546563dc5cbba93796682dcdb07286aa91da7974d544daa41a3d43724b93d749d41b7dd5e957240f08f0b9ca062e74e22242d4c22e727dc34e799
6
+ metadata.gz: 3f93d4828418904ef7fddf845ac09268e9d2f3cf20b3f56c617df107d7026f6840be34d08723d039cde0f4551f9b9d8bc6b6a8e76dc5c3e20e446784f33a1199
7
+ data.tar.gz: 128d151bd2e65cb28fc0d2ab42b7baf58ec0518e52cadf439b0175478abd7740cbae0bb1c9ed1b6d60b86ab131e87eb056c34c76828fd650433b36ef813e0a1a
data/README.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  Provides attribute logging functionality to ActiveRecord objects.
4
4
 
5
- [![CircleCI](https://circleci.com/gh/boxt/logga/tree/master.svg?style=svg&circle-token=f9550ac25744c292e3680638bad3d5deafb1c4e1)](https://circleci.com/gh/boxt/logga/tree/master)
5
+ ## Requirements
6
+
7
+ Requires Ruby 2.7.3 or above
6
8
 
7
9
  ## Installation
8
10
 
@@ -59,3 +61,4 @@ The gem is available as open source under the terms of the [MIT License](http://
59
61
 
60
62
  - Write some tests
61
63
  - Improve the documentation
64
+ - Remove explicit `EXCLUDED_KEYS` and `EXCLUDED_SUFFIXES` for something that can be set in an initializer
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.2
1
+ 2.2.0
@@ -5,24 +5,28 @@ module Logga
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  EXCLUDED_KEYS = %i[id created_at deleted_at initial updated_at log sent_after_sales_emails].freeze
8
- EXCLUDED_KEYS_SUFFIXES = %i[_id _filenames].freeze
8
+ EXCLUDED_SUFFIXES = %i[_id _filenames].freeze
9
9
 
10
10
  included do
11
- class_attribute :log_fields, instance_writer: false
11
+ class_attribute :allowed_fields, instance_writer: false
12
12
  class_attribute :excluded_fields, instance_writer: false
13
+ class_attribute :log_fields, instance_writer: false
14
+
15
+ self.allowed_fields = []
16
+ self.excluded_fields = []
13
17
  self.log_fields = {}
14
- self.excluded_fields = {}
15
18
  end
16
19
 
17
20
  class_methods do
18
- def add_log_entries_for(*actions, to: :self, fields: {}, exclude_fields: [])
19
- after_create :log_model_creation if actions.include?(:create)
21
+ def add_log_entries_for(*actions, to: :self, fields: {}, allowed_fields: [], exclude_fields: [])
22
+ after_create :log_model_creation if actions.include?(:create)
20
23
  after_destroy :log_model_deletion if actions.include?(:delete)
21
- after_update :log_model_changes if actions.include?(:update)
24
+ after_update :log_model_changes if actions.include?(:update)
22
25
  define_method(:log_receiver) { to == :self ? self : send(to) }
23
26
 
27
+ self.allowed_fields = Array(allowed_fields)
28
+ self.excluded_fields = allowed_fields.blank? ? Array(exclude_fields) : []
24
29
  self.log_fields = fields
25
- self.excluded_fields = Array(exclude_fields)
26
30
  end
27
31
  end
28
32
 
@@ -105,10 +109,13 @@ module Logga
105
109
  end
106
110
 
107
111
  def reject_change?(key)
108
- EXCLUDED_KEYS.include?(key.to_sym) ||
109
- (!log_fields.include?(key.to_sym) &&
110
- (excluded_fields.include?(key.to_sym) ||
111
- EXCLUDED_KEYS_SUFFIXES.any? { |suffix| key.to_s.end_with?(suffix.to_s) }))
112
+ sym_key = key.to_sym
113
+ return allowed_fields.exclude?(sym_key) if allowed_fields.present?
114
+
115
+ EXCLUDED_KEYS.include?(sym_key) ||
116
+ (log_fields.exclude?(sym_key) &&
117
+ (excluded_fields.include?(sym_key) ||
118
+ EXCLUDED_SUFFIXES.any? { |suffix| key.to_s.end_with?(suffix.to_s) }))
112
119
  end
113
120
 
114
121
  def should_not_log?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logga
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boxt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-23 00:00:00.000000000 Z
11
+ date: 2021-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -50,104 +50,6 @@ dependencies:
50
50
  - - "~>"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '6.0'
53
- - !ruby/object:Gem::Dependency
54
- name: boxt_ruby_style_guide
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - '='
58
- - !ruby/object:Gem::Version
59
- version: 7.2.0
60
- type: :development
61
- prerelease: false
62
- version_requirements: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - '='
65
- - !ruby/object:Gem::Version
66
- version: 7.2.0
67
- - !ruby/object:Gem::Dependency
68
- name: bundler
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '2.1'
74
- type: :development
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '2.1'
81
- - !ruby/object:Gem::Dependency
82
- name: byebug
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '11.0'
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: '11.0'
95
- - !ruby/object:Gem::Dependency
96
- name: rake
97
- requirement: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '13.0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '13.0'
109
- - !ruby/object:Gem::Dependency
110
- name: rspec
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '3.9'
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '3.9'
123
- - !ruby/object:Gem::Dependency
124
- name: rspec-nc
125
- requirement: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '0.3'
130
- type: :development
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: '0.3'
137
- - !ruby/object:Gem::Dependency
138
- name: simplecov
139
- requirement: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: '0.17'
144
- type: :development
145
- prerelease: false
146
- version_requirements: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - "~>"
149
- - !ruby/object:Gem::Version
150
- version: '0.17'
151
53
  description: Extensions to ActiveRecord to log entries on model changes
152
54
  email:
153
55
  - developers@boxt.co.uk
@@ -174,14 +76,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
76
  requirements:
175
77
  - - ">="
176
78
  - !ruby/object:Gem::Version
177
- version: '2.5'
79
+ version: '2.7'
178
80
  required_rubygems_version: !ruby/object:Gem::Requirement
179
81
  requirements:
180
82
  - - ">="
181
83
  - !ruby/object:Gem::Version
182
84
  version: '0'
183
85
  requirements: []
184
- rubygems_version: 3.1.4
86
+ rubygems_version: 3.2.15
185
87
  signing_key:
186
88
  specification_version: 4
187
89
  summary: ActiveRecord log entries on model changes