logga 2.1.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -1
  3. data/Rakefile +4 -5
  4. data/VERSION +1 -1
  5. data/lib/logga/active_record.rb +18 -11
  6. metadata +24 -165
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d71ddde0a3f77df7a99104eee92d48ad33b591e02302ecbeb6e1a0dde07a458
4
- data.tar.gz: 9f0bca3b05e8c32157c8830afcdbe5d0033a7a656a8bb3cf6be6df253c59974c
3
+ metadata.gz: 156b89d500e231c81261932228af86c934bf2a95d57eaeed5016aa98fcd8ce72
4
+ data.tar.gz: 6662b604701dc7a5422863977d7d2dbef2549af382f1bf7f038afb72c7d032e6
5
5
  SHA512:
6
- metadata.gz: ff90b0e475b7934a3efdc39acb83bbcf5dba7861e3089ad64c515af65f81631a11de869b4a7b72cc726b6bf68d3414fe2b331cd993899e49a77316d2e3cd9535
7
- data.tar.gz: 1e93a2a97687bca4cfb68ffd184d8d1425df9fc03bcf0c7baabd992d14ef55da4b2881226c6d95db2409e46207e031a6b08407f5fc99300d21839ad068bb9790
6
+ metadata.gz: 7c13d5319ed50c2114252f174c5433b8b67a5c91ce78dca3f22f238f8c62c963e2a5a98ac21e68f5d70b89f95b02d80a94dc3de990f823fa1a100e31a60ca621
7
+ data.tar.gz: 0bcdbdffe2682e5d21ec90f02b4dc2cdf26fa1fb3ebe0f2893b69573b4bbd903526b983b59783ed3a37a11d4960c0f023ba47562432db8cc600a65522dbfcbe9
data/README.md CHANGED
@@ -2,7 +2,12 @@
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
+ [![Gem Version](https://badge.fury.io/rb/logga.svg)](https://badge.fury.io/rb/logga)
6
+ [![CI](https://github.com/boxt/logga/actions/workflows/ci.yml/badge.svg)](https://github.com/boxt/logga/actions/workflows/ci.yml)
7
+
8
+ ## Requirements
9
+
10
+ Requires Ruby 2.7.3 or above
6
11
 
7
12
  ## Installation
8
13
 
@@ -59,3 +64,4 @@ The gem is available as open source under the terms of the [MIT License](http://
59
64
 
60
65
  - Write some tests
61
66
  - Improve the documentation
67
+ - Remove explicit `EXCLUDED_KEYS` and `EXCLUDED_SUFFIXES` for something that can be set in an initializer
data/Rakefile CHANGED
@@ -2,11 +2,10 @@
2
2
 
3
3
  require "bundler/gem_tasks"
4
4
  require "rake/testtask"
5
+ require "rspec/core/rake_task"
5
6
 
6
- Rake::TestTask.new(:test) do |t|
7
- t.libs << "test"
8
- t.libs << "lib"
9
- t.test_files = FileList["test/**/*_test.rb"]
7
+ RSpec::Core::RakeTask.new(:spec) do |t|
8
+ t.pattern = Dir.glob("spec/**/*_spec.rb")
10
9
  end
11
10
 
12
- task default: :test
11
+ task test: :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.0
1
+ 3.0.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.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boxt
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-03 00:00:00.000000000 Z
11
+ date: 2022-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,182 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '6'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: '5.2'
29
+ version: '6'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: activesupport
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '5.2'
39
+ version: '6'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '8'
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
47
  - - ">="
39
48
  - !ruby/object:Gem::Version
40
- version: '5.2'
41
- - !ruby/object:Gem::Dependency
42
- name: boxt_ruby_style_guide
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '4.2'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '4.2'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.1'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.1'
69
- - !ruby/object:Gem::Dependency
70
- name: byebug
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '11.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '11.0'
83
- - !ruby/object:Gem::Dependency
84
- name: factory_bot
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '4.8'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '4.8'
97
- - !ruby/object:Gem::Dependency
98
- name: minitest
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '5.13'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '5.13'
111
- - !ruby/object:Gem::Dependency
112
- name: minitest-bang
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
49
+ version: '6'
50
+ - - "<"
116
51
  - !ruby/object:Gem::Version
117
- version: '1.0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.0'
125
- - !ruby/object:Gem::Dependency
126
- name: minitest-fail-fast
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '0.1'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '0.1'
139
- - !ruby/object:Gem::Dependency
140
- name: minitest-macos-notification
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.3'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.3'
153
- - !ruby/object:Gem::Dependency
154
- name: minitest-reporters
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.4'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.4'
167
- - !ruby/object:Gem::Dependency
168
- name: rake
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '13.0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '13.0'
181
- - !ruby/object:Gem::Dependency
182
- name: simplecov
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '0.17'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: '0.17'
52
+ version: '8'
195
53
  description: Extensions to ActiveRecord to log entries on model changes
196
54
  email:
197
55
  - developers@boxt.co.uk
@@ -209,8 +67,9 @@ files:
209
67
  homepage: https://github.com/boxt/logga
210
68
  licenses:
211
69
  - MIT
212
- metadata: {}
213
- post_install_message:
70
+ metadata:
71
+ rubygems_mfa_required: 'true'
72
+ post_install_message:
214
73
  rdoc_options: []
215
74
  require_paths:
216
75
  - lib
@@ -218,15 +77,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
218
77
  requirements:
219
78
  - - ">="
220
79
  - !ruby/object:Gem::Version
221
- version: '0'
80
+ version: '2.7'
222
81
  required_rubygems_version: !ruby/object:Gem::Requirement
223
82
  requirements:
224
83
  - - ">="
225
84
  - !ruby/object:Gem::Version
226
85
  version: '0'
227
86
  requirements: []
228
- rubygems_version: 3.1.2
229
- signing_key:
87
+ rubygems_version: 3.2.22
88
+ signing_key:
230
89
  specification_version: 4
231
90
  summary: ActiveRecord log entries on model changes
232
91
  test_files: []