Sha256: af3596fd070d0ce1ca31c43008654c76f9624bdb2f291dd6bf2272e14b3e7e2e

Contents?: true

Size: 1.14 KB

Versions: 6

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_ruby_utils/yaml'

module EacRailsBase0App
  class Application < Rails::Application
    module Envvars
      ENVVARS_FILE_BASENAME = 'envvars'
      ENVVARS_DIRECTORY_NAME = "#{ENVVARS_FILE_BASENAME}.d"
      ENVVARS_FILE_EXTENSIONS = %w[.yml .yaml].freeze

      common_concern do
        setup('envvars')
      end

      module ClassMethods
        def config_root
          ::Rails.root.join('config')
        end

        def envvars_files
          ENVVARS_FILE_EXTENSIONS.flat_map do |extension|
            [config_root.join("#{ENVVARS_FILE_BASENAME}#{extension}")] +
              config_root.join(ENVVARS_DIRECTORY_NAME).glob("*#{extension}")
          end
        end

        def load_envvars_file(path)
          return unless path.exist?

          vars = ::EacRubyUtils::Yaml.load(path.read)
          raise "\"#{path}\" does not contain a Hash" unless vars.is_a?(::Hash)

          vars.each { |name, value| ENV[name.to_s] = value }
        end

        def setup_envvars
          envvars_files.each { |path| load_envvars_file(path) }
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
eac_rails_base0-0.52.0 lib/eac_rails_base0/app_base/application/envvars.rb
eac_rails_base0-0.51.0 lib/eac_rails_base0/app_base/application/envvars.rb
eac_rails_base0-0.50.0 lib/eac_rails_base0/app_base/application/envvars.rb
eac_rails_base0-0.49.0 lib/eac_rails_base0/app_base/application/envvars.rb
eac_rails_base0-0.48.1 lib/eac_rails_base0/app_base/application/envvars.rb
eac_rails_base0-0.48.0 lib/eac_rails_base0/app_base/application/envvars.rb