Sha256: 59da3e3ccc3da854d66e05e3465143618d4803a0cb3345721e6a1784cc6a087b

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'app_config_loader/errors'
require 'app_config_loader/config'
require 'app_config_loader/loader'
require 'app_config_loader/parser'
require 'app_config_loader/config_entry'
require 'app_config_loader/config_map'
require 'app_config_loader/config_with_indifferent_access'

require 'app_config_loader/railtie' if defined?(Rails)

module AppConfigLoader
  #
  # Config
  #

  def self.configure
    yield self.config if block_given?
  end

  def self.init
    cfg = self.config

    raise NameError, "cannot assign app config because '#{cfg.const_name}' is already defined" if Object.const_defined?(cfg.const_name)
    Object.const_set cfg.const_name, self.load(cfg)
  end

  def self.load(config = nil)
    raise ArgumentError, 'config must be a AppConfigLoader::Config instance' unless config.nil? || config.is_a?(AppConfigLoader::Config)
    Loader.new(config || self.config).load
  end

  private

  def self.config
    @config ||= self.default_config
  end

  def self.default_config
    cfg = AppConfigLoader::Config.new

    cfg.const_name = 'APP_CONFIG'

    if defined?(Rails)
      cfg.env = Rails.env || ENV['RACK_ENV'] || ENV['RUBY_ENV'] || 'development'
      cfg.config_paths << Rails.root.join('config', 'app_configs')
      cfg.local_overrides = Rails.root.join('config', 'app_configs', 'local_overrides.yml')
    else
      cfg.env = ENV['RACK_ENV'] || ENV['RUBY_ENV'] || 'development'
      cfg.config_paths << File.join(Dir.pwd, 'app_configs')
      cfg.local_overrides = File.join(Dir.pwd, 'config', 'local_overrides.yml')
    end

    cfg
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
app_config_loader-1.0.3 lib/app_config_loader.rb