You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
997 B
37 lines
997 B
module Configuration |
|
class EnvConfigurationService < ConfigurationService |
|
private |
|
|
|
def config_present? |
|
!ENV["S3_CONFIG"].nil? || !ENV["REDIS_CONFIG"].nil? |
|
end |
|
|
|
def read_config |
|
unless config_present? |
|
@logger.warn("Could not find S3_CONFIG or REDIS_CONFIG in the environment variables!") |
|
return {} |
|
end |
|
|
|
config = {} |
|
assign_config(config, :"aws-s3-bucket", "S3_CONFIG") |
|
assign_config(config, :redis, "REDIS_CONFIG") |
|
config |
|
end |
|
|
|
def assign_config(config, symbol, env_variable) |
|
config_hash = parse_json_config(env_variable) |
|
config[symbol] = config_hash unless config_hash.empty? |
|
end |
|
|
|
def parse_json_config(env_variable_name) |
|
if ENV[env_variable_name].present? |
|
begin |
|
return JSON.parse(ENV[env_variable_name], { symbolize_names: true }) |
|
rescue StandardError |
|
@logger.warn("Could not parse #{env_variable_name}!") |
|
end |
|
end |
|
{} |
|
end |
|
end |
|
end
|
|
|