module Rails

Public Instance Methods

_dev_secrets_parse(paths, env:) click to toggle source
# File lib/dev_secrets.rb, line 15
def _dev_secrets_parse(paths, env:)
  all_secrets = Hash.new
  valid_encrypted_secrets_file = false
  invalid_message = false

  paths_enc, paths_plain = paths.partition { |path| path.end_with?(".enc") }

  paths_plain.each do |path|
    _dev_secrets_parse_file(path, env, all_secrets)
  end

  paths_enc.each do |path|
    begin
      _dev_secrets_parse_file(path, env, all_secrets)
      valid_encrypted_secrets_file = true
    rescue ActiveSupport::MessageEncryptor::InvalidMessage
      invalid_message = true
    end
  end

  # If at least one encrypted secrets file was loaded, then ignore the
  # exceptions from any failures.
  raise ActiveSupport::MessageEncryptor::InvalidMessage if invalid_message && !valid_encrypted_secrets_file
  all_secrets
end
Also aliased as: parse
_dev_secrets_parse_file(path, env, all_secrets) click to toggle source
# File lib/dev_secrets.rb, line 79
def _dev_secrets_parse_file(path, env, all_secrets)
  require "erb"
  secrets = YAML.load(ERB.new(preprocess(path)).result) || {}
  all_secrets.merge!(secrets["shared"].deep_symbolize_keys) if secrets["shared"]
  all_secrets.merge!(secrets[env].deep_symbolize_keys) if secrets[env]
end
_dev_secrets_read_first() click to toggle source
# File lib/dev_secrets.rb, line 62
def _dev_secrets_read_first
  return_val = nil
  Dir.glob(@root.join("config", DevSecrets::GLOB_ENC)).each do |path|
    begin
      return_val = [path, decrypt(IO.binread(path))]
      break
    rescue ActiveSupport::MessageEncryptor::InvalidMessage
    end
  end
  return_val or raise ActiveSupport::MessageEncryptor::InvalidMessage # Nothing decrypted correctly
end
_dev_secrets_read_for_editing() { |tmp_path| ... } click to toggle source
# File lib/dev_secrets.rb, line 44
def _dev_secrets_read_for_editing
  path, contents = _dev_secrets_read_first
  tmp_path = File.join(Dir.tmpdir, File.basename(path))
  IO.binwrite(tmp_path, contents)

  puts "Editing #{path}"
  yield tmp_path

  _dev_secrets_write(path, File.read(tmp_path))
ensure
  FileUtils.rm(tmp_path) if File.exist?(tmp_path)
end
Also aliased as: read_for_editing
_dev_secrets_write(path, contents) click to toggle source
# File lib/dev_secrets.rb, line 74
def _dev_secrets_write(path, contents)
  IO.binwrite("#{path}.tmp", encrypt(contents))
  FileUtils.mv("#{path}.tmp", path)
end
parse(paths, env:)
Also aliased as: parse_original
Alias for: _dev_secrets_parse
parse_original(paths, env:)
Alias for: parse
read_for_editing()
Also aliased as: read_for_editing_original
read_for_editing_original()
Alias for: read_for_editing