daffy_lib 0.1.3 → 0.1.4
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 +6 -6
- data/lib/daffy_lib/version.rb +1 -1
- data/lib/tasks/db_tasks.rake +46 -0
- metadata +1 -3
- data/lib/tasks/generate_encryption_attributes.rake +0 -32
- data/lib/tasks/re_encrypt_attributes.rake +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e42df7142acbd13e877203468339c8c27e84516d44ccc3107fa01f7e5034af05
|
4
|
+
data.tar.gz: d2da07b7b352615048dc862cc389440cffe860b735fa39b0d17c9f128cb5bd61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ebfe579e41062e8e4eaf6f36f8ff808cbc231f512f77be55c4a043d85f384a372dcb22f22a9cdb8fb8b0d8d5193f2be140839bd260e4102162fa667c8b3f85c
|
7
|
+
data.tar.gz: 200e8e4df5686ae1fdb7fc1ceb051582f27952e7c940602260ba3076b5b383be29738d32bdb0ee7dc978853b9f8610816cd57de09818b0bedc0b460474fd4087
|
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.4)
|
5
5
|
porky_lib
|
6
6
|
rails
|
7
7
|
redis
|
@@ -68,16 +68,16 @@ 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.
|
72
|
-
aws-sdk-core (3.
|
71
|
+
aws-partitions (1.274.0)
|
72
|
+
aws-sdk-core (3.90.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.29.0)
|
78
78
|
aws-sdk-core (~> 3, >= 3.71.0)
|
79
79
|
aws-sigv4 (~> 1.1)
|
80
|
-
aws-sdk-s3 (1.60.
|
80
|
+
aws-sdk-s3 (1.60.2)
|
81
81
|
aws-sdk-core (~> 3, >= 3.83.0)
|
82
82
|
aws-sdk-kms (~> 1)
|
83
83
|
aws-sigv4 (~> 1.1)
|
@@ -122,7 +122,7 @@ GEM
|
|
122
122
|
mini_mime (1.0.2)
|
123
123
|
mini_portile2 (2.4.0)
|
124
124
|
minitest (5.13.0)
|
125
|
-
msgpack (1.3.
|
125
|
+
msgpack (1.3.3)
|
126
126
|
nio4r (2.5.2)
|
127
127
|
nokogiri (1.10.8)
|
128
128
|
mini_portile2 (~> 2.4.0)
|
data/lib/daffy_lib/version.rb
CHANGED
data/lib/tasks/db_tasks.rake
CHANGED
@@ -25,5 +25,51 @@ namespace :db do
|
|
25
25
|
created_at:datetime \\
|
26
26
|
updated_at:datetime`
|
27
27
|
end
|
28
|
+
|
29
|
+
desc 'Migrates the database by generating partition guid and encryption epoch for the specified model'
|
30
|
+
task :generate_encryption_attributes, %i[model limit] => :environment do |_t, args|
|
31
|
+
model = args[:model].camelize
|
32
|
+
limit = args[:limit] || 1000
|
33
|
+
limit = limit.to_i
|
34
|
+
|
35
|
+
abort 'Need to provide `model` as argument' if model.blank?
|
36
|
+
|
37
|
+
model_classname = model.to_s.camelize.singularize.constantize
|
38
|
+
|
39
|
+
model_classname.instance_eval do
|
40
|
+
# Find all records that don't yet have a partition_guid
|
41
|
+
scope :pending_migration, -> { where(partition_guid: nil) }
|
42
|
+
end
|
43
|
+
|
44
|
+
model_classname.reset_column_information
|
45
|
+
|
46
|
+
records = limit.zero? ? model_classname.pending_migration : model_classname.pending_migration.limit(limit)
|
47
|
+
|
48
|
+
records.each do |record|
|
49
|
+
record.generate_partition_guid
|
50
|
+
record.generate_encryption_epoch
|
51
|
+
|
52
|
+
record.save!(validate: false)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
desc 'Migrates the database by performing read/write to re-encrypt specified attributes for the specified model'
|
57
|
+
task :re_encrypt_attributes, %i[model] => :environment do |_t, args|
|
58
|
+
model = args[:model].camelize
|
59
|
+
|
60
|
+
abort 'Need to provide `model` as argument' if model.blank?
|
61
|
+
|
62
|
+
model_classname = model.to_s.camelize.singularize.constantize
|
63
|
+
encrypted_attributes = model_classname.encrypted_attributes.keys
|
64
|
+
|
65
|
+
model_classname.all.each do |record|
|
66
|
+
encrypted_attributes.each do |attribute|
|
67
|
+
value = record.attributes.with_indifferent_access[attribute.to_sym]
|
68
|
+
record.send("#{attribute}=", value) unless value.blank?
|
69
|
+
end
|
70
|
+
|
71
|
+
record.save!(validate: false)
|
72
|
+
end
|
73
|
+
end
|
28
74
|
end
|
29
75
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benoît Jeaurond, Weiyun Lu
|
@@ -337,8 +337,6 @@ 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.rake
|
341
|
-
- lib/tasks/re_encrypt_attributes.rake
|
342
340
|
homepage: https://github.com/Zetatango/daffy_lib
|
343
341
|
licenses: []
|
344
342
|
metadata: {}
|
@@ -1,32 +0,0 @@
|
|
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:
|
@@ -1,24 +0,0 @@
|
|
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:
|