class SuperTopSecret::Injector

Public Class Methods

generate_config(app_file, secret_file) click to toggle source
# File lib/super_top_secret/injector.rb, line 3
def self.generate_config(app_file, secret_file)
  app_hash      = YAML.load(File.read(app_file))
  secret_hash   = YAML.load(File.read(secret_file))
  injected_hash = create_new_hash(app_hash, secret_hash)

  write_new_hash_to_file(injected_hash)
end

Private Class Methods

create_new_hash(app_hash, secret_hash) click to toggle source
# File lib/super_top_secret/injector.rb, line 13
def self.create_new_hash(app_hash, secret_hash)
  injected_hash = app_hash.dup

  app_hash.each do |key, val|
    if val.is_a?(Hash) # Nested
      val.each do |nested_key, nested_val|
        nested_val = secret_hash[key][nested_val] if secret_field?(nested_val)
        injected_hash[key][nested_key] = nested_val
      end
    else
      val = secret_hash[val] if secret_field?(val)
      injected_hash[key] = val
    end
  end

  return injected_hash
end
secret_field?(val) click to toggle source
# File lib/super_top_secret/injector.rb, line 31
def self.secret_field?(val)
  val.to_s.include?("53CR3T_")
end
write_new_hash_to_file(injected_hash) click to toggle source
# File lib/super_top_secret/injector.rb, line 35
def self.write_new_hash_to_file(injected_hash)
  File.open("config/application.yml", "w+"){|f| f.write(injected_hash.to_yaml)}
end