Module: Gonfic
- Defined in:
- lib/gonfic.rb,
lib/gonfic/config.rb,
lib/gonfic/version.rb,
lib/gonfic/directories.rb,
lib/gonfic/env_extractor.rb
Overview
external interface to creating a Config with data loaded from files
Defined Under Namespace
Classes: Config, Directories, EnvExtractor
Constant Summary
collapse
- YAML_FILE_LOADER =
->(filename){ YAML.safe_load(File.read(filename)) }
- VERSION =
'0.6.2'.freeze
Class Method Summary
collapse
Class Method Details
.configs_from_defaults(defaults:) ⇒ Object
25
26
27
|
# File 'lib/gonfic.rb', line 25
def self.configs_from_defaults(defaults:)
[Config.new(defaults)]
end
|
.configs_from_env(env_variable_prefix:, defaults:) ⇒ Object
47
48
49
50
51
|
# File 'lib/gonfic.rb', line 47
def self.configs_from_env(env_variable_prefix:, defaults:)
return [] unless env_variable_prefix
[EnvExtractor.(prefix: env_variable_prefix, defaults: defaults)]
end
|
.configs_from_files(filename:, file_loader:, directories:) ⇒ Object
29
30
31
32
33
34
35
36
|
# File 'lib/gonfic.rb', line 29
def self.configs_from_files(filename:, file_loader:, directories:)
return [] unless filename
directories.map do |directory|
filepath = File.expand_path(File.join(directory, filename))
load_configuration_file(filepath, file_loader)
end
end
|
.load_configuration_file(filename, file_loader) ⇒ Object
38
39
40
41
42
43
44
45
|
# File 'lib/gonfic.rb', line 38
def self.load_configuration_file(filename, file_loader)
return {} unless File.exist?(filename)
file_loader.call(filename)
rescue StandardError => e
Hashie.logger.error(e)
{}
end
|
.new(defaults: {}, filename: nil, file_loader: YAML_FILE_LOADER, directories: Directories.home_then_here, env_variable_prefix: EnvExtractor.env_prefix_from_filename(filename)) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/gonfic.rb', line 12
def self.new(
defaults: {},
filename: nil, file_loader: YAML_FILE_LOADER, directories: Directories.home_then_here,
env_variable_prefix: EnvExtractor.env_prefix_from_filename(filename)
)
configs =
configs_from_defaults(defaults: defaults) +
configs_from_files(filename: filename, file_loader: file_loader, directories: directories) +
configs_from_env(env_variable_prefix: env_variable_prefix, defaults: defaults)
configs.reduce(:merge!)
end
|