class Obfuscator::Generic
Attributes
columns[RW]
model[RW]
Public Instance Methods
scrub!(model_name = "User", columns = [])
click to toggle source
# File lib/obfuscator/generic.rb, line 7 def scrub!(model_name = "User", columns = []) @model = model_name.singularize.constantize if columns.is_a?(Hash) store_types_from_column_values(columns) @columns = columns.keys else @columns = columns end return unless @columns.any? and @columns.map!(&:to_s) scrub_all_records! end
Private Instance Methods
columns_with_obfuscated_values_hash()
click to toggle source
# File lib/obfuscator/generic.rb, line 34 def columns_with_obfuscated_values_hash result_hash = {} @columns.each do |column| type = instance_variable_get("@#{column}_type") if type.present? if Faker::Internet.respond_to?(type) result_hash[column] = Faker::Internet.send(type) @result = result_hash else raise UnkownObfuscationTypeError.new("[#{type}] is an unknown type") end else derive_value_from_type(@model.columns_hash[column].type) @result = Hash[@columns.map { |key| [key, @value] }] end end @result end
derive_value_from_type(sql_type)
click to toggle source
# File lib/obfuscator/generic.rb, line 57 def derive_value_from_type(sql_type) default = Faker::Lorem.sentence case sql_type when :string @value = default when :text @value = Faker::Lorem.paragraph when :integer @value = Obfuscator::Utilities.random_number(10) when :boolean @value = Obfuscator::Utilities.random_boolean when :datetime @value = Obfuscator::Utilities.random_date else @value = default end end
model_columns_contain_given?()
click to toggle source
# File lib/obfuscator/generic.rb, line 24 def model_columns_contain_given? (@model.columns_hash.keys | @columns).any? end
scrub_all_records!()
click to toggle source
# File lib/obfuscator/generic.rb, line 76 def scrub_all_records! @model.find_in_batches do |group| group.each do |record| attributes = model_columns_contain_given? ? columns_with_obfuscated_values_hash : {} record.update_attributes(attributes) end end end
store_types_from_column_values(columns)
click to toggle source
# File lib/obfuscator/generic.rb, line 28 def store_types_from_column_values(columns) columns.each do |key, value| instance_variable_set("@#{key}_type", value) end end