Sha256: 2cec0ef114c9c44a39b83c726b5b351e424c44ca6bf61644115d0c52fc50425d

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

require "dry/configurable/config"
require "dry/configurable/methods"

module Dry
  module Configurable
    # Initializer method which is prepended when `Dry::Configurable`
    # is included in a class
    #
    # @api private
    module Initializer
      # @api private
      def initialize(*)
        @__config__ = self.class.__config_build__(self.class.settings)

        super
      end
      ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
    end

    # Instance-level API when `Dry::Configurable` is included in a class
    #
    # @api public
    module InstanceMethods
      include Methods

      # Return object's configuration
      #
      # @return [Config]
      #
      # @api public
      def config
        @__config__
      end

      # Finalize the config and freeze the object
      #
      # @api public
      def finalize!(freeze_values: false)
        super
        freeze
      end

      private

      # @api public
      def initialize_copy(source)
        super
        @__config__ = source.config.dup
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dry-configurable-1.3.0 lib/dry/configurable/instance_methods.rb
dry-configurable-1.2.0 lib/dry/configurable/instance_methods.rb
dry-configurable-1.1.0 lib/dry/configurable/instance_methods.rb
dry-configurable-1.0.1 lib/dry/configurable/instance_methods.rb