logga 2.0.0 → 2.2.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 +4 -1
  3. data/Rakefile +4 -5
  4. data/VERSION +1 -1
  5. data/lib/logga/active_record.rb +18 -11
  6. metadata +19 -161
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 925035912c3dec0b55b86b29c31f352ff4ffe7ad47e57abd29f229b15279406d
4
- data.tar.gz: d25e62778b7151aa4a850b94c486712b9543868f7d24eb0e7e1622c418074339
3
+ metadata.gz: 175040125db02fd1bda317f34c45ea3bd45d003f07270c7e4f6942653a39967b
4
+ data.tar.gz: 737bfad69f886d068d83b99f8a574ffb52e18d6aeb8fa93e9efe9605e652918e
5
5
  SHA512:
6
- metadata.gz: 9cbdbb94e95b923f6d05f1c4a1de43c3cca46e7f8f504009e0e329f55101e8db4d1f959b68d24f1b0859ac4345b6400eefa4bbb27f4f7a2a53179827259a70ab
7
- data.tar.gz: f135395e2f9bbfe7e5921de570780cef09930014560184d65bd30f737cccbbcd4083b6b843ed1fc4860787cf022c83630ba7bc6dc9c911c9ec2e21273f7c30fa
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/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.0.0
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,197 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logga
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.2.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-01-07 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
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '5.2'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
20
  - - "~>"
25
21
  - !ruby/object:Gem::Version
26
- version: '5.2'
27
- - !ruby/object:Gem::Dependency
28
- name: activesupport
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '5.2'
22
+ version: '6.0'
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
38
- - - "~>"
27
+ - - ">="
39
28
  - !ruby/object:Gem::Version
40
29
  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.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '4.0'
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.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
30
  - - "~>"
67
31
  - !ruby/object:Gem::Version
68
- version: '2.0'
32
+ version: '6.0'
69
33
  - !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
- - - "~>"
116
- - !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
34
+ name: activesupport
155
35
  requirement: !ruby/object:Gem::Requirement
156
36
  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
- - - "~>"
37
+ - - ">="
165
38
  - !ruby/object:Gem::Version
166
- version: '1.4'
167
- - !ruby/object:Gem::Dependency
168
- name: rake
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
39
+ version: '5.2'
171
40
  - - "~>"
172
41
  - !ruby/object:Gem::Version
173
- version: '13.0'
174
- type: :development
42
+ version: '6.0'
43
+ type: :runtime
175
44
  prerelease: false
176
45
  version_requirements: !ruby/object:Gem::Requirement
177
46
  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
- - - "~>"
47
+ - - ">="
186
48
  - !ruby/object:Gem::Version
187
- version: '0.17'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
49
+ version: '5.2'
192
50
  - - "~>"
193
51
  - !ruby/object:Gem::Version
194
- version: '0.17'
52
+ version: '6.0'
195
53
  description: Extensions to ActiveRecord to log entries on model changes
196
54
  email:
197
55
  - developers@boxt.co.uk
@@ -210,7 +68,7 @@ homepage: https://github.com/boxt/logga
210
68
  licenses:
211
69
  - MIT
212
70
  metadata: {}
213
- post_install_message:
71
+ post_install_message:
214
72
  rdoc_options: []
215
73
  require_paths:
216
74
  - lib
@@ -218,15 +76,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
218
76
  requirements:
219
77
  - - ">="
220
78
  - !ruby/object:Gem::Version
221
- version: '0'
79
+ version: '2.7'
222
80
  required_rubygems_version: !ruby/object:Gem::Requirement
223
81
  requirements:
224
82
  - - ">="
225
83
  - !ruby/object:Gem::Version
226
84
  version: '0'
227
85
  requirements: []
228
- rubygems_version: 3.1.2
229
- signing_key:
86
+ rubygems_version: 3.2.15
87
+ signing_key:
230
88
  specification_version: 4
231
89
  summary: ActiveRecord log entries on model changes
232
90
  test_files: []