class Triglav::Agent::Base::Setting

A base class represents settings coming from config.yml and cli options

You usually do not need to customize this class, but if you want to implement your original, configure

Triglav::Agent::Configuration.setting_class =

Constants

DEFAULT_APP_ENV
DEFAULT_LOG
DEFAULT_LOG_LEVEL

Attributes

cli_options[R]

Public Class Methods

new(cli_options = {}) click to toggle source
# File lib/triglav/agent/base/setting.rb, line 21
def initialize(cli_options = {})
  @cli_options = cli_options
  if dotenv?
    require 'dotenv'
    Dotenv.load
  end
end

Public Instance Methods

[](key) click to toggle source
# File lib/triglav/agent/base/setting.rb, line 86
def [](key)
  config[key]
end
app_env() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 36
def app_env
  @app_env ||= ENV['APP_ENV'] || DEFAULT_APP_ENV
end
config_file() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 40
def config_file
  @cli_options[:config]
end
debug?() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 56
def debug?
  @cli_options[:debug]
end
dig(*args) click to toggle source
# File lib/triglav/agent/base/setting.rb, line 90
def dig(*args)
  config.dig(*args)
end
dotenv?() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 52
def dotenv?
  @cli_options[:dotenv]
end
log() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 68
def log
  @cli_options[:log] || config.dig(:serverengine, :log) || DEFAULT_LOG
end
log_level() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 64
def log_level
  @cli_options[:log_level] || config.dig(:serverengine, :log_level) || DEFAULT_LOG_LEVEL
end
logger() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 60
def logger
  @logger ||= Logger.new(log, serverengine_logger_options)
end
reload() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 29
def reload
  Dotenv.overload if dotenv?
  @config = nil
  @logger.close rescue nil
  @logger = nil
end
serverengine_options() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 72
def serverengine_options
  serverengine_options = config[:serverengine].dup || {}
  # serverengine_options[:workers] = 1 # default
  # serverengine_options[:worker_type] = 'embedded' # default
  serverengine_options.keys.each do |k|
    serverengine_options.delete(k) if k.to_s.start_with?('log')
  end
  serverengine_options.merge!({
    logger: logger,
    log_level: log_level,
    setting: self,
  })
end
status_file() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 44
def status_file
  @status_file ||= @cli_options[:status] || config.dig(:triglav, :status_file) || 'status.yml'
end
token_file() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 48
def token_file
  @token_file ||= @cli_options[:token] || config.dig(:triglav, :token_file) || 'token.yml'
end

Private Instance Methods

config() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 96
def config
  @config ||=
    begin
      raw = File.read(config_file)
      erb = ERB.new(raw, nil, "-").tap {|_| _.filename = config_file }
      all = HashUtil.deep_symbolize_keys(YAML.load(erb.result(binding)))
      all[app_env.to_sym]
    end
end
serverengine_logger_options() click to toggle source
# File lib/triglav/agent/base/setting.rb, line 106
def serverengine_logger_options
  {
    log: log,
    log_level: log_level,
  }
end