Module: Component::Settings
- Defined in:
- lib/component/settings.rb
Class Method Summary collapse
- ._load_settings_file(name, env) ⇒ Object
-
.load_settings(name, env: nil) ⇒ Object
Loads settings YAML and returns hash with settings names/values.
Class Method Details
._load_settings_file(name, env) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/component/settings.rb', line 34 def self._load_settings_file(name, env) yaml_file = Pathname.new("#{Rails.application.paths["config"].existent.first}/#{name}.yml") if yaml_file.exist? require "erb" yaml = (YAML.load(ERB.new(yaml_file.read).result) || {}) result = yaml.map { |k, v| [k, v[env] || {}] }.to_h return result else return nil end rescue Psych::SyntaxError => e raise "YAML syntax error occurred while parsing #{yaml_file}. " \ "Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \ "Error: #{e.message}" end |
.load_settings(name, env: nil) ⇒ Object
Loads settings YAML and returns hash with settings names/values
In case name.override.yml file present, its content merged on top of settings file.
Adapted from Rails.application.config_for() YAML format key:env:value
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/component/settings.rb', line 18 def self.load_settings(name, env: nil) env ||= Rails.env settings = _load_settings_file(name, env) if settings.nil? raise "Could not load configuration. No such file - #{name}.yml" end overrides = _load_settings_file(name.to_s + ".override", env) if overrides.present? settings.deep_merge!(overrides) end settings.with_indifferent_access.freeze end |