Sha256: 04e71cb8d84b3ba6efb905900a4cfbcc0e5e8c9ed9f58bc507e6d83661609d6d

Contents?: true

Size: 1.38 KB

Versions: 4

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

require "dry/configurable"
require "dry/core/deprecations"

module Dry
  module System
    module ProviderSources
      module Settings
        # @api private
        class Loader
          # @api private
          attr_reader :store

          # @api private
          def initialize(root:, env:, store: ENV)
            @store = store
            load_dotenv(root, env.to_sym)
          end

          # @api private
          def [](key)
            store[key]
          end

          private

          def load_dotenv(root, env)
            require "dotenv"
            Dotenv.load(*dotenv_files(root, env)) if defined?(Dotenv)
          rescue LoadError
            Dry::Core::Deprecations.announce(
              "Dry::System :settings provider now requires dotenv to to load settings from .env files`", # rubocop:disable Layout/LineLength
              "Add `gem \"dotenv\"` to your application's `Gemfile`",
              tag: "dry-system",
              uplevel: 3
            )
            # Do nothing if dotenv is unavailable
          end

          def dotenv_files(root, env)
            [
              File.join(root, ".env.#{env}.local"),
              (File.join(root, ".env.local") unless env == :test),
              File.join(root, ".env.#{env}"),
              File.join(root, ".env")
            ].compact
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dry-system-0.26.0 lib/dry/system/provider_sources/settings/loader.rb
dry-system-0.25.0 lib/dry/system/provider_sources/settings/loader.rb
dry-system-0.24.0 lib/dry/system/provider_sources/settings/loader.rb
dry-system-0.23.0 lib/dry/system/provider_sources/settings/loader.rb