Skip to content

Commit 800cba6

Browse files
okuyamaokuyama
authored andcommitted
マスク前の値を参照できるようにする
1 parent 455a9cf commit 800cba6

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

lib/mongo_masker.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def mask_each_document(scope, model)
7474

7575
scope.each_with_index do |document, index|
7676
print "Masking #{model['name']} (#{index + 1}/#{total})\r" unless @config['silent']
77-
mask = create_mask model['fields']
77+
mask = create_mask model['fields'], document
7878

7979
apply_mask(document, mask)
8080
db[model['name']].find({_id: document['_id']}).update_one(document)
@@ -107,31 +107,31 @@ def parse_condition condition
107107
condition
108108
end
109109

110-
def create_mask(fields)
110+
def create_mask(fields, document)
111111
mask = {}
112-
fields.each do |field, value|
113-
if value.is_a?(Symbol)
114-
sub_mask = create_mask @config['models'].find{|model| model['name'] == value.to_s}['fields']
112+
fields.each do |field, expr|
113+
if expr.is_a?(Symbol)
114+
sub_mask = create_mask @config['models'].find{|model| model['name'] == expr.to_s}['fields'], document
115115
mask[field] = sub_mask
116116
next
117117
end
118118

119-
mask[field] = evalute_field_value(value)
119+
mask[field] = evalute_field_expr(expr, document[field])
120120
end
121121
mask
122122
end
123123

124124
def apply_mask(document, mask)
125-
mask = mask.reject do |field, _value|
125+
mask = mask.reject do |field, _expr|
126126
document[field].nil?
127127
end
128128
document.update(mask)
129129
end
130130

131-
def evalute_field_value(value)
132-
eval(value)
131+
def evalute_field_expr(expr, value)
132+
eval(expr)
133133
rescue StandardError
134-
raise "Can't eval `#{value}`"
134+
raise "Can't eval `#{expr}`"
135135
end
136136

137137
def load_from_yaml(config_path)

mongo_masker.gemspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Gem::Specification.new do |s|
22
s.name = 'mongo_masker'
3-
s.version = '1.0.2'
4-
s.date = '2020-01-23'
3+
s.version = '1.0.3'
4+
s.date = '2021-10-28'
55
s.summary = 'Mongo masker'
66
s.description = 'Masking production data mongodb for testing/development'
77
s.authors = ['Clicia Scarlet']

0 commit comments

Comments
 (0)