better_record 0.23.7 → 0.25.2
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 +4 -4
- data/app/models/better_record/base.rb +3 -0
- data/app/models/better_record/logged_action.rb +1 -40
- data/app/models/better_record/model_concerns/logged_action_base.rb +50 -0
- data/app/models/better_record/table_size.rb +0 -6
- data/config/initializers/redis_store.rb +2 -2
- data/lib/better_record/polymorphic_override.rb +1 -1
- data/lib/better_record/version.rb +1 -1
- data/lib/core_ext/array.rb +1 -1
- metadata +52 -32
- data/lib/better_record/fake_redis.rb +0 -107
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 925a6e392a7e09a6a37ac206c21b744ff4302e2230f19fc103cf4dc2034f605b
|
4
|
+
data.tar.gz: 23d59e5cb90a4bd57941cb6098acc0f242b176bb7703418f3484ce6a80699d55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08ce52bf923b009a567f52bb4188fb010df8dde927bd88f03b4986d6546c4c3cff2810d6e80f85acc6ef7a8b3e6dfe5795c490ba8f90fa0f71c49a17191f088b'
|
7
|
+
data.tar.gz: 7999a2285c92638ca80f4dcc57529d812ab83855fa364cea859ebb593b3047173db84a7db3677573888c2c07a6a0a05bead706443181b92309d5f01f6e651138
|
@@ -29,10 +29,13 @@ module BetterRecord
|
|
29
29
|
connection.execute(%Q(SELECT 1 FROM #{t_name}_#{self.table_name_only} LIMIT 1))
|
30
30
|
|
31
31
|
self.const_set(:LoggedAction, Class.new(ApplicationRecord))
|
32
|
+
self.const_get(:LoggedAction).include(ModelConcerns::LoggedActionBase)
|
32
33
|
self.const_get(:LoggedAction).table_name = "#{t_name}_#{self.table_name_only}"
|
33
34
|
self.const_get(:LoggedAction).primary_key = :event_id
|
35
|
+
self
|
34
36
|
rescue ActiveRecord::StatementInvalid
|
35
37
|
self.const_set(:LoggedAction, BetterRecord::LoggedAction)
|
38
|
+
self
|
36
39
|
end
|
37
40
|
|
38
41
|
self.has_many self.audit_relation_name,
|
@@ -3,27 +3,15 @@
|
|
3
3
|
module BetterRecord
|
4
4
|
class LoggedAction < Base
|
5
5
|
# == Constants ============================================================
|
6
|
-
ACTIONS = {
|
7
|
-
D: 'DELETE',
|
8
|
-
I: 'INSERT',
|
9
|
-
U: 'UPDATE',
|
10
|
-
T: 'TRUNCATE',
|
11
|
-
A: 'ARCHIVE',
|
12
|
-
}.with_indifferent_access
|
13
6
|
|
14
7
|
# == Attributes ===========================================================
|
15
8
|
self.table_name = "#{BetterRecord.db_audit_schema}.logged_actions_view"
|
16
9
|
self.primary_key = :event_id
|
17
10
|
|
18
11
|
# == Extensions ===========================================================
|
12
|
+
include ModelConcerns::LoggedActionBase
|
19
13
|
|
20
14
|
# == Relationships ========================================================
|
21
|
-
belongs_to :audited,
|
22
|
-
polymorphic: :true,
|
23
|
-
primary_type: :table_name,
|
24
|
-
foreign_key: :row_id,
|
25
|
-
foreign_type: :table_name,
|
26
|
-
optional: true
|
27
15
|
|
28
16
|
# == Validations ==========================================================
|
29
17
|
|
@@ -34,37 +22,10 @@ module BetterRecord
|
|
34
22
|
# == Boolean Class Methods ================================================
|
35
23
|
|
36
24
|
# == Class Methods ========================================================
|
37
|
-
def self.default_print
|
38
|
-
[
|
39
|
-
:event_id,
|
40
|
-
:row_id,
|
41
|
-
:full_name,
|
42
|
-
:app_user_id,
|
43
|
-
:app_user_type,
|
44
|
-
:action_type,
|
45
|
-
:changed_columns
|
46
|
-
]
|
47
|
-
end
|
48
|
-
|
49
|
-
# def self.set_audits_methods!
|
50
|
-
# self.has_many self.audit_relation_name,
|
51
|
-
# class_name: 'BetterRecord::LoggedAction',
|
52
|
-
# primary_type: :table_name,
|
53
|
-
# foreign_key: :row_id,
|
54
|
-
# foreign_type: :table_name,
|
55
|
-
# as: self.audit_relation_name
|
56
|
-
# end
|
57
25
|
|
58
26
|
# == Boolean Methods ======================================================
|
59
27
|
|
60
28
|
# == Instance Methods =====================================================
|
61
|
-
def changed_columns
|
62
|
-
(self.changed_fields || {}).keys.join(', ').presence || 'N/A'
|
63
|
-
end
|
64
|
-
|
65
|
-
def action_type
|
66
|
-
ACTIONS[action] || 'UNKNOWN'
|
67
|
-
end
|
68
29
|
|
69
30
|
end
|
70
31
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/concern'
|
4
|
+
|
5
|
+
module BetterRecord
|
6
|
+
module ModelConcerns
|
7
|
+
module LoggedActionBase
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
ACTIONS = {
|
11
|
+
D: 'DELETE',
|
12
|
+
I: 'INSERT',
|
13
|
+
U: 'UPDATE',
|
14
|
+
T: 'TRUNCATE',
|
15
|
+
A: 'ARCHIVE',
|
16
|
+
}.with_indifferent_access
|
17
|
+
|
18
|
+
included do
|
19
|
+
belongs_to :record,
|
20
|
+
polymorphic: :true,
|
21
|
+
primary_type: :table_name,
|
22
|
+
foreign_key: :row_id,
|
23
|
+
foreign_type: :table_name,
|
24
|
+
optional: true
|
25
|
+
end
|
26
|
+
|
27
|
+
class_methods do
|
28
|
+
def default_print
|
29
|
+
[
|
30
|
+
:event_id,
|
31
|
+
:row_id,
|
32
|
+
:full_name,
|
33
|
+
:app_user_id,
|
34
|
+
:app_user_type,
|
35
|
+
:action_type,
|
36
|
+
:changed_columns
|
37
|
+
]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def changed_columns
|
42
|
+
(self.changed_fields || {}).keys.join(', ').presence || 'N/A'
|
43
|
+
end
|
44
|
+
|
45
|
+
def action_type
|
46
|
+
ACTIONS[action] || 'UNKNOWN'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -85,12 +85,6 @@ module BetterRecord
|
|
85
85
|
# == Boolean Methods ======================================================
|
86
86
|
|
87
87
|
# == Instance Methods =====================================================
|
88
|
-
def changed_columns
|
89
|
-
(self.changed_fields || {}).keys.join(', ').presence || 'N/A'
|
90
|
-
end
|
91
88
|
|
92
|
-
def action_type
|
93
|
-
ACTIONS[action] || 'UNKNOWN'
|
94
|
-
end
|
95
89
|
end
|
96
90
|
end
|
@@ -8,9 +8,9 @@ if defined?(Redis) && defined?(Redis::Namespace)
|
|
8
8
|
tmp_rds.get('test')
|
9
9
|
rescue
|
10
10
|
if (!Rails.env.production? && !Boolean.parse(ENV.fetch('FORCE_REDIS') { false })) || Boolean.parse(ENV.fetch('ALLOW_FAKE_REDIS') { false })
|
11
|
-
|
11
|
+
raise unless defined?(TinyFakeRedis)
|
12
12
|
puts "WARNING!!! Redis Server not found"
|
13
|
-
tmp_rds =
|
13
|
+
tmp_rds = TinyFakeRedis.new
|
14
14
|
else
|
15
15
|
raise
|
16
16
|
end
|
@@ -23,7 +23,7 @@ module BetterRecord
|
|
23
23
|
$!.message, $!.backtrace if debug
|
24
24
|
|
25
25
|
if type_val == :table_name_without_schema
|
26
|
-
type_val = klass.table_name.to_s.split('.').
|
26
|
+
type_val = klass.table_name.to_s.split('.').last
|
27
27
|
else
|
28
28
|
type_val = klass.polymorphic_name
|
29
29
|
end
|
data/lib/core_ext/array.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: better_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.25.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sampson Crowley
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '5'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 5.2.
|
22
|
+
version: 5.2.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '5'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 5.2.
|
32
|
+
version: 5.2.4
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: pg
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
version: '0.0'
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.0.
|
62
|
+
version: 0.0.19
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -69,7 +69,7 @@ dependencies:
|
|
69
69
|
version: '0.0'
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: 0.0.
|
72
|
+
version: 0.0.19
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: pry-rails
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,22 +114,22 @@ dependencies:
|
|
114
114
|
name: jwt
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: 2.1.0
|
120
117
|
- - "~>"
|
121
118
|
- !ruby/object:Gem::Version
|
122
119
|
version: '2.1'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 2.1.0
|
123
123
|
type: :runtime
|
124
124
|
prerelease: false
|
125
125
|
version_requirements: !ruby/object:Gem::Requirement
|
126
126
|
requirements:
|
127
|
-
- - ">="
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: 2.1.0
|
130
127
|
- - "~>"
|
131
128
|
- !ruby/object:Gem::Version
|
132
129
|
version: '2.1'
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 2.1.0
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
134
|
name: jwe
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,62 +154,82 @@ dependencies:
|
|
154
154
|
name: csv
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: 3.0.0
|
160
157
|
- - "~>"
|
161
158
|
- !ruby/object:Gem::Version
|
162
159
|
version: '3.0'
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: 3.1.2
|
163
163
|
type: :runtime
|
164
164
|
prerelease: false
|
165
165
|
version_requirements: !ruby/object:Gem::Requirement
|
166
166
|
requirements:
|
167
|
-
- - ">="
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
version: 3.0.0
|
170
167
|
- - "~>"
|
171
168
|
- !ruby/object:Gem::Version
|
172
169
|
version: '3.0'
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: 3.1.2
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
174
|
name: rspec-rails
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: '3.
|
179
|
+
version: '3.9'
|
180
180
|
- - ">="
|
181
181
|
- !ruby/object:Gem::Version
|
182
|
-
version: 3.
|
182
|
+
version: 3.9.0
|
183
183
|
type: :development
|
184
184
|
prerelease: false
|
185
185
|
version_requirements: !ruby/object:Gem::Requirement
|
186
186
|
requirements:
|
187
187
|
- - "~>"
|
188
188
|
- !ruby/object:Gem::Version
|
189
|
-
version: '3.
|
189
|
+
version: '3.9'
|
190
190
|
- - ">="
|
191
191
|
- !ruby/object:Gem::Version
|
192
|
-
version: 3.
|
192
|
+
version: 3.9.0
|
193
193
|
- !ruby/object:Gem::Dependency
|
194
|
-
name:
|
194
|
+
name: tiny_fake_redis
|
195
195
|
requirement: !ruby/object:Gem::Requirement
|
196
196
|
requirements:
|
197
|
-
- - ">="
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
version: 4.10.0
|
200
197
|
- - "~>"
|
201
198
|
- !ruby/object:Gem::Version
|
202
|
-
version: '
|
199
|
+
version: '0.1'
|
200
|
+
- - ">="
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: 0.1.0
|
203
203
|
type: :development
|
204
204
|
prerelease: false
|
205
205
|
version_requirements: !ruby/object:Gem::Requirement
|
206
206
|
requirements:
|
207
|
+
- - "~>"
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '0.1'
|
210
|
+
- - ">="
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: 0.1.0
|
213
|
+
- !ruby/object:Gem::Dependency
|
214
|
+
name: factory_bot_rails
|
215
|
+
requirement: !ruby/object:Gem::Requirement
|
216
|
+
requirements:
|
217
|
+
- - "~>"
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '4.10'
|
207
220
|
- - ">="
|
208
221
|
- !ruby/object:Gem::Version
|
209
222
|
version: 4.10.0
|
223
|
+
type: :development
|
224
|
+
prerelease: false
|
225
|
+
version_requirements: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
210
227
|
- - "~>"
|
211
228
|
- !ruby/object:Gem::Version
|
212
229
|
version: '4.10'
|
230
|
+
- - ">="
|
231
|
+
- !ruby/object:Gem::Version
|
232
|
+
version: 4.10.0
|
213
233
|
description: |2
|
214
234
|
This app extends active record to allow you to change the polymorphic type value in relationships.
|
215
235
|
It also extends active record batching functions to be able to order records while batching.
|
@@ -244,6 +264,7 @@ files:
|
|
244
264
|
- app/models/better_record/logged_action.rb
|
245
265
|
- app/models/better_record/model_concerns/has_protected_password.rb
|
246
266
|
- app/models/better_record/model_concerns/has_validated_avatar.rb
|
267
|
+
- app/models/better_record/model_concerns/logged_action_base.rb
|
247
268
|
- app/models/better_record/table_size.rb
|
248
269
|
- app/views/better_record/table_sizes/index.html.erb
|
249
270
|
- app/views/better_record/table_sizes/show.html.erb
|
@@ -301,7 +322,6 @@ files:
|
|
301
322
|
- lib/better_record/encoder.rb
|
302
323
|
- lib/better_record/engine.rb
|
303
324
|
- lib/better_record/exchange_rate_integer.rb
|
304
|
-
- lib/better_record/fake_redis.rb
|
305
325
|
- lib/better_record/gender.rb
|
306
326
|
- lib/better_record/inject_methods.rb
|
307
327
|
- lib/better_record/jwt.rb
|
@@ -345,7 +365,7 @@ homepage: https://github.com/SampsonCrowley/multi_app_active_record
|
|
345
365
|
licenses:
|
346
366
|
- MIT
|
347
367
|
metadata: {}
|
348
|
-
post_install_message:
|
368
|
+
post_install_message:
|
349
369
|
rdoc_options: []
|
350
370
|
require_paths:
|
351
371
|
- lib
|
@@ -360,8 +380,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
360
380
|
- !ruby/object:Gem::Version
|
361
381
|
version: '0'
|
362
382
|
requirements: []
|
363
|
-
rubygems_version: 3.
|
364
|
-
signing_key:
|
383
|
+
rubygems_version: 3.1.3
|
384
|
+
signing_key:
|
365
385
|
specification_version: 4
|
366
386
|
summary: Fix functions that are lacking in Active record to be compatible with multi-app
|
367
387
|
databases
|
@@ -1,107 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module BetterRecord
|
5
|
-
class FakeRedis
|
6
|
-
def data
|
7
|
-
@data ||= {}
|
8
|
-
end
|
9
|
-
|
10
|
-
def incr(key)
|
11
|
-
data[key] ||= 0
|
12
|
-
data[key] += 1
|
13
|
-
end
|
14
|
-
|
15
|
-
def decr(key)
|
16
|
-
data[key] ||= 0
|
17
|
-
data[key] -= 1
|
18
|
-
end
|
19
|
-
|
20
|
-
def set(key, val)
|
21
|
-
data[key] = val
|
22
|
-
end
|
23
|
-
|
24
|
-
def get(key)
|
25
|
-
data[key].dup
|
26
|
-
end
|
27
|
-
|
28
|
-
def lpush(key, val)
|
29
|
-
require_array
|
30
|
-
data[key].unshift val
|
31
|
-
data[key].size
|
32
|
-
end
|
33
|
-
|
34
|
-
def lrem(key, count, val)
|
35
|
-
require_array
|
36
|
-
start_idx = 0
|
37
|
-
arr = data[key]
|
38
|
-
removed = 0
|
39
|
-
|
40
|
-
if count == 0
|
41
|
-
removed = (arr.select {|v| v != val}).size
|
42
|
-
arr.select! {|v| v != val}
|
43
|
-
else
|
44
|
-
arr.reverse! if count < 0
|
45
|
-
|
46
|
-
count.abs.times do
|
47
|
-
removed += 1 unless arr.delete_at(arr.index(val) || arr.size).nil?
|
48
|
-
end
|
49
|
-
|
50
|
-
arr.reverse! if count < 0
|
51
|
-
end
|
52
|
-
|
53
|
-
data[key] = arr
|
54
|
-
removed
|
55
|
-
end
|
56
|
-
|
57
|
-
def lrange(key, start_idx, end_idx = -1)
|
58
|
-
data[key][start_idx..end_idx] || []
|
59
|
-
end
|
60
|
-
|
61
|
-
def rpush(key, val)
|
62
|
-
require_array
|
63
|
-
data[key] << val
|
64
|
-
data[key].size
|
65
|
-
end
|
66
|
-
|
67
|
-
def rpushx(key, val)
|
68
|
-
return 0 unless data[key]
|
69
|
-
rpush key, val
|
70
|
-
end
|
71
|
-
|
72
|
-
def rpop(key)
|
73
|
-
require_array
|
74
|
-
data[key].pop
|
75
|
-
end
|
76
|
-
|
77
|
-
def rpoplpush(one, two)
|
78
|
-
val = rpop(one)
|
79
|
-
lpush two, val
|
80
|
-
val
|
81
|
-
end
|
82
|
-
|
83
|
-
def keys(pattern = ".*")
|
84
|
-
data.keys.filter {|k| k.to_s =~ /^#{pattern}$/}
|
85
|
-
end
|
86
|
-
|
87
|
-
def del(*keys)
|
88
|
-
i = 0
|
89
|
-
keys.map {|k| data.delete(k) && (i += 1) }
|
90
|
-
i
|
91
|
-
end
|
92
|
-
|
93
|
-
def method_missing
|
94
|
-
return nil
|
95
|
-
end
|
96
|
-
|
97
|
-
private
|
98
|
-
def require_array(key)
|
99
|
-
data[key] ||= []
|
100
|
-
raise_wrong_type unless data[key].is_a?(Array)
|
101
|
-
end
|
102
|
-
|
103
|
-
def raise_wrong_type
|
104
|
-
raise CommandError.new("WRONGTYPE Operation against a key holding the wrong kind of value")
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|