daffy_lib 0.1.2 → 0.1.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 +4 -4
- data/Gemfile.lock +11 -12
- data/lib/daffy_lib/version.rb +1 -1
- data/lib/tasks/generate_encryption_attributes.rake +32 -0
- data/lib/tasks/re_encrypt_attributes.rake +24 -0
- metadata +4 -3
- data/lib/tasks/generate_encryption_attributes.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7eb281bde2461b8274952783bc2206fd328874c747dccac03f7d4a54f9fa2d57
|
4
|
+
data.tar.gz: ae3522cd8a5c663b84af151ae77baaf985cca4fa1c185577d8140fc0a6d828c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5476f53e1db7c2bbb28978db6bb05de7a6279cd39f974efaf68d027a0702ca75d51745d52170fc1f8819829baa46802eda97b8b50466ffa039de4bf92d41a36a
|
7
|
+
data.tar.gz: 68801fda22eab1cc629f47e7af75240b76962baa307f1175ab42d99e2d50e1076fa7dfb26bc9496543257eafb7b47c260ca5f4ed553614d6eae0072784d6b9ee
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
daffy_lib (0.1.
|
4
|
+
daffy_lib (0.1.3)
|
5
5
|
porky_lib
|
6
6
|
rails
|
7
7
|
redis
|
@@ -68,13 +68,13 @@ GEM
|
|
68
68
|
attr_encrypted (3.1.0)
|
69
69
|
encryptor (~> 3.0.0)
|
70
70
|
aws-eventstream (1.0.3)
|
71
|
-
aws-partitions (1.
|
71
|
+
aws-partitions (1.269.0)
|
72
72
|
aws-sdk-core (3.89.1)
|
73
73
|
aws-eventstream (~> 1.0, >= 1.0.2)
|
74
74
|
aws-partitions (~> 1, >= 1.239.0)
|
75
75
|
aws-sigv4 (~> 1.1)
|
76
76
|
jmespath (~> 1.0)
|
77
|
-
aws-sdk-kms (1.
|
77
|
+
aws-sdk-kms (1.28.0)
|
78
78
|
aws-sdk-core (~> 3, >= 3.71.0)
|
79
79
|
aws-sigv4 (~> 1.1)
|
80
80
|
aws-sdk-s3 (1.60.1)
|
@@ -102,7 +102,7 @@ GEM
|
|
102
102
|
factory_bot_rails (5.1.1)
|
103
103
|
factory_bot (~> 5.1.0)
|
104
104
|
railties (>= 4.2.0)
|
105
|
-
ffi (1.12.
|
105
|
+
ffi (1.12.2)
|
106
106
|
globalid (0.4.2)
|
107
107
|
activesupport (>= 4.2.0)
|
108
108
|
i18n (1.7.1)
|
@@ -118,13 +118,13 @@ GEM
|
|
118
118
|
marcel (0.3.3)
|
119
119
|
mimemagic (~> 0.3.2)
|
120
120
|
method_source (0.9.2)
|
121
|
-
mimemagic (0.3.
|
121
|
+
mimemagic (0.3.4)
|
122
122
|
mini_mime (1.0.2)
|
123
123
|
mini_portile2 (2.4.0)
|
124
124
|
minitest (5.13.0)
|
125
125
|
msgpack (1.3.1)
|
126
126
|
nio4r (2.5.2)
|
127
|
-
nokogiri (1.10.
|
127
|
+
nokogiri (1.10.8)
|
128
128
|
mini_portile2 (~> 2.4.0)
|
129
129
|
parallel (1.19.1)
|
130
130
|
parser (2.7.0.2)
|
@@ -205,15 +205,14 @@ GEM
|
|
205
205
|
unicode-display_width (>= 1.4.0, < 1.7)
|
206
206
|
rubocop-performance (1.5.2)
|
207
207
|
rubocop (>= 0.71.0)
|
208
|
-
rubocop-rspec (1.
|
208
|
+
rubocop-rspec (1.38.0)
|
209
209
|
rubocop (>= 0.68.1)
|
210
210
|
rubocop_runner (2.2.0)
|
211
211
|
ruby-progressbar (1.10.1)
|
212
|
-
simplecov (0.
|
212
|
+
simplecov (0.18.2)
|
213
213
|
docile (~> 1.1)
|
214
|
-
|
215
|
-
|
216
|
-
simplecov-html (0.10.2)
|
214
|
+
simplecov-html (~> 0.11)
|
215
|
+
simplecov-html (0.12.0)
|
217
216
|
sprockets (4.0.0)
|
218
217
|
concurrent-ruby (~> 1.0)
|
219
218
|
rack (> 1, < 3)
|
@@ -227,7 +226,7 @@ GEM
|
|
227
226
|
timecop (0.9.1)
|
228
227
|
tzinfo (1.2.6)
|
229
228
|
thread_safe (~> 0.1)
|
230
|
-
unicode-display_width (1.6.
|
229
|
+
unicode-display_width (1.6.1)
|
231
230
|
url (0.3.2)
|
232
231
|
websocket-driver (0.7.1)
|
233
232
|
websocket-extensions (>= 0.1.0)
|
data/lib/daffy_lib/version.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
namespace :db do
|
5
|
+
desc 'this task generates partition guid and encryption epoch for the specified model'
|
6
|
+
task :generate_encryption_attributes, %i[model limit] => :environment do |_t, args|
|
7
|
+
model = args[:model].camelize
|
8
|
+
limit = args[:limit] || 1000
|
9
|
+
limit = limit.to_i
|
10
|
+
|
11
|
+
abort 'Need to provide `model` as argument' if model.blank?
|
12
|
+
|
13
|
+
model_classname = model.to_s.camelize.singularize.constantize
|
14
|
+
|
15
|
+
model_classname.instance_eval do
|
16
|
+
# Find all records that don't yet have a partition_guid
|
17
|
+
scope :pending_migration, -> { where(partition_guid: nil) }
|
18
|
+
end
|
19
|
+
|
20
|
+
model_classname.reset_column_information
|
21
|
+
|
22
|
+
records = limit.zero? ? model_classname.pending_migration : model_classname.pending_migration.limit(limit)
|
23
|
+
|
24
|
+
records.each do |record|
|
25
|
+
record.generate_partition_guid
|
26
|
+
record.generate_encryption_epoch
|
27
|
+
|
28
|
+
record.save!(validate: false)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
# :nocov:
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
namespace :db do
|
5
|
+
desc 'this task performs a db read/write to re-encrypt specified attributes for the specified model'
|
6
|
+
task :re_encrypt_attributes, %i[model] => :environment do |_t, args|
|
7
|
+
model = args[:model].camelize
|
8
|
+
|
9
|
+
abort 'Need to provide `model` as argument' if model.blank?
|
10
|
+
|
11
|
+
model_classname = model.to_s.camelize.singularize.constantize
|
12
|
+
encrypted_attributes = model_classname.encrypted_attributes.keys
|
13
|
+
|
14
|
+
model_classname.all.each do |record|
|
15
|
+
encrypted_attributes.each do |attribute|
|
16
|
+
value = record.attributes.with_indifferent_access[attribute.to_sym]
|
17
|
+
record.send("#{attribute}=", value) unless value.blank?
|
18
|
+
end
|
19
|
+
|
20
|
+
record.save!(validate: false)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
# :nocov:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daffy_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benoît Jeaurond, Weiyun Lu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: attr_encrypted
|
@@ -337,7 +337,8 @@ files:
|
|
337
337
|
- lib/daffy_lib/validators/string_validator.rb
|
338
338
|
- lib/daffy_lib/version.rb
|
339
339
|
- lib/tasks/db_tasks.rake
|
340
|
-
- lib/tasks/generate_encryption_attributes.
|
340
|
+
- lib/tasks/generate_encryption_attributes.rake
|
341
|
+
- lib/tasks/re_encrypt_attributes.rake
|
341
342
|
homepage: https://github.com/Zetatango/daffy_lib
|
342
343
|
licenses: []
|
343
344
|
metadata: {}
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# :nocov:
|
4
|
-
desc 'this task generates partition guid and encryption epoch for the specified model'
|
5
|
-
task :generate_encryption_attributes, %i[model limit] => :environment do |_t, args|
|
6
|
-
model = args[:model].camelize
|
7
|
-
limit = args[:limit] || 1000
|
8
|
-
limit = limit.to_i
|
9
|
-
|
10
|
-
abort 'Need to provide `model` as argument' if model.blank?
|
11
|
-
|
12
|
-
model_classname = model.to_s.camelize.singularize.constantize
|
13
|
-
|
14
|
-
model_classname.instance_eval do
|
15
|
-
# Find all records that don't yet have a partition_guid
|
16
|
-
scope :pending_migration, -> { where(partition_guid: nil) }
|
17
|
-
end
|
18
|
-
|
19
|
-
model_classname.reset_column_information
|
20
|
-
|
21
|
-
records = limit.zero? ? model_classname.pending_migration : model_classname.pending_migration.limit(limit)
|
22
|
-
|
23
|
-
records.each do |record|
|
24
|
-
record.generate_partition_guid
|
25
|
-
record.generate_encryption_epoch
|
26
|
-
|
27
|
-
record.save!(validate: false)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
# :nocov:
|