Module: AppConfigurable
- Defined in:
- lib/app_configurable.rb,
lib/app_configurable/error.rb,
lib/app_configurable/version.rb
Defined Under Namespace
Modules: ClassMethods, InstanceMethods Classes: Error
Constant Summary collapse
- VERSION =
'0.1.6'
- @@available_config_attributes =
rubocop:disable Style/ClassVars
[]
Class Method Summary collapse
-
.available_config_attributes ⇒ Array
Returns the list of available configuration attributes, which are defined with the ‘entry` method.
- .included(owner) ⇒ Object
- .load_configs(paths = [], raise_on_missing: false, rails_env: Rails.env) ⇒ void
-
.missing_required_vars ⇒ Array
Report missing required ‘ENV` variables.
Class Method Details
.available_config_attributes ⇒ Array
Returns the list of available configuration attributes, which are defined with the ‘entry` method.
24 25 26 |
# File 'lib/app_configurable.rb', line 24 def self.available_config_attributes @@available_config_attributes end |
.included(owner) ⇒ Object
16 17 18 19 |
# File 'lib/app_configurable.rb', line 16 def self.included(owner) owner.extend ClassMethods owner.include InstanceMethods end |
.load_configs(paths = [], raise_on_missing: false, rails_env: Rails.env) ⇒ void
This method returns an undefined value.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/app_configurable.rb', line 32 def self.load_configs(paths = [], raise_on_missing: false, rails_env: Rails.env) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity rails_env = ActiveSupport::StringInquirer.new(rails_env) unless rails_env.is_a?(ActiveSupport::StringInquirer) paths.map do |path| absolute_path = Dir.pwd + "/#{path}" File.directory?(absolute_path) ? Dir["#{absolute_path}/**/*.rb"].each { |f| require f } : require(absolute_path) end available_config_attributes.collect(&:receiver).uniq.each do |klass| klass.instance.send(:rails_env=, rails_env, swallow_errors: true) end raise_on_missing && missing_required_vars.any? && raise(Error::RequiredVarMissing, missing_required_vars.join(', ')) end |
.missing_required_vars ⇒ Array
Report missing required ‘ENV` variables.
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/app_configurable.rb', line 50 def self.missing_required_vars out = [] available_config_attributes.each do |method| method.call rescue Error::RequiredVarMissing out << "#{method.receiver.name}.#{method.name}" end out end |