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.
38 lines
997 B
38 lines
997 B
2 years ago
|
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
|