class Creds

The main module of rails-creds

Constants

VERSION

Public Class Methods

method_missing(name, *_args) click to toggle source

rubocop:disable Style/MethodMissingSuper

# File lib/creds.rb, line 34
def self.method_missing(name, *_args)
  instance.credentials.fetch(name)
rescue KeyError
  raise MissingKeyError.new(name, Rails.env)
end
respond_to_missing?(_name) click to toggle source
# File lib/creds.rb, line 29
def self.respond_to_missing?(_name)
  true
end
to_h() click to toggle source

rubocop:enable Style/MethodMissingSuper

# File lib/creds.rb, line 41
def self.to_h
  instance.credentials
end

Public Instance Methods

credentials() click to toggle source
# File lib/creds.rb, line 45
def credentials
  return @credentials if @credentials

  unless encrypted_credentials_exist?
    Rails.logger.warn MissingCredentialsWarning
    return NullCredentials.new
  end

  raise MissingMasterKeyError unless master_key_present?

  @credentials = fetch_credentials_for_current_env
end

Private Instance Methods

encrypted_credentials_exist?() click to toggle source
# File lib/creds.rb, line 69
def encrypted_credentials_exist?
  File.exist? Rails.root.join("config", "credentials.yml.enc")
end
fetch_credentials_for_current_env() click to toggle source
# File lib/creds.rb, line 60
def fetch_credentials_for_current_env
  base = Rails.application.credentials.config
  scoped = base.fetch(Rails.env.to_sym)
  base.delete(Rails.env.to_sym)
  base.merge(scoped)
rescue KeyError
  raise MissingEnvError, Rails.env
end
master_key_present?() click to toggle source
# File lib/creds.rb, line 73
def master_key_present?
  return true if ENV["RAILS_MASTER_KEY"]
  return true if File.exist?(Rails.root.join("config", "master.key"))

  false
end