class EnvManifest::Settings

Attributes

file_path[R]

Public Class Methods

new(file_path) click to toggle source
# File lib/env_manifest/settings.rb, line 7
def initialize(file_path)
  @file_path = file_path
  load_defaults
  validate
end

Public Instance Methods

[](key) click to toggle source
# File lib/env_manifest/settings.rb, line 13
def [](key)
  val = ENV[key]
  return val
end

Private Instance Methods

app_json() click to toggle source
# File lib/env_manifest/settings.rb, line 42
def app_json
  file = File.read(file_path)
  JSON.parse(file)
end
load_defaults() click to toggle source
# File lib/env_manifest/settings.rb, line 20
def load_defaults
  manifest.env.each do |key, value|
    if ENV[key].nil? || ENV[key] == ''
      ENV[key] = value.value || manifest.environments&.dig(Rails.env)&.env&.dig(key)&.value
    end
  end
end
manifest() click to toggle source
# File lib/env_manifest/settings.rb, line 38
def manifest
  AppManifest(app_json)
end
required_envs() click to toggle source
# File lib/env_manifest/settings.rb, line 34
def required_envs
  @required_envs ||= manifest.env.select { |_key, value| value.required }
end
validate() click to toggle source
# File lib/env_manifest/settings.rb, line 28
def validate
  required_envs.each do |key, _value|
    raise MissingRequiredEnv, "Missing #{key}" unless ENV[key].present?
  end
end