Sha256: 33b2afcf9896855be3eb459bf934131d42a90d9bc1a7d487f01502b6677d1ca9
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
# lib/real_data_tests/data_anonymizer.rb require 'faker' module RealDataTests class DataAnonymizer def initialize(configuration) @configuration = configuration end def anonymize_records(records) records.map do |record| anonymize_record(record) end end def anonymize_record(record) return record unless should_anonymize?(record) anonymization_rules = @configuration.anonymization_rules[record.class.name] anonymization_rules.each do |attribute, anonymizer| begin new_value = case anonymizer when String # Handle legacy string-based Faker calls process_faker_string(anonymizer) when Proc, Lambda # Handle lambda-based anonymizers anonymizer.call(record) else raise Error, "Unsupported anonymizer type: #{anonymizer.class}" end record.send("#{attribute}=", new_value) rescue => e raise Error, "Failed to anonymize #{attribute} using #{anonymizer.inspect}: #{e.message}" end end record end private def should_anonymize?(record) @configuration.anonymization_rules.key?(record.class.name) end def process_faker_string(faker_method) # Support legacy string format like "Faker::Name.first_name" faker_class, faker_method = faker_method.split('::')[1..].join('::').split('.') faker_class = Object.const_get("Faker::#{faker_class}") faker_class.send(faker_method) rescue => e raise Error, "Failed to process Faker method '#{faker_method}': #{e.message}" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
real_data_tests-0.1.0 | lib/real_data_tests/data_anonymizer.rb |