Sha256: e9c4879543e923339920600b6dd5d8f124616b92401e12bad90bef7fc6d48ed8

Contents?: true

Size: 1.24 KB

Versions: 15

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module Karafka
  # Namespace for patches of external gems/libraries
  module Patches
    # Patch that will allow to use proc based lazy evaluated settings with Dry Configurable
    # @see https://github.com/dry-rb/dry-configurable/blob/master/lib/dry/configurable.rb
    module DryConfigurable
      # We overwrite ::Dry::Configurable::Config to change on proc behaviour
      # Unfortunately it does not provide an on call proc evaluation, so
      # this feature had to be added here on demand/
      # @param args Any arguments that DryConfigurable::Config accepts
      def initialize(*args)
        super

        @config.each_key(&method(:rebuild))
      end

      private

      # Method that rebuilds a given accessor, so when it consists a proc value, it will
      # evaluate it upon return for blocks that don't require any arguments, otherwise
      # it will return the block
      # @param method_name [Symbol] name of an accessor that we want to rebuild
      def rebuild(method_name)
        define_singleton_method method_name do
          value = super()
          return value unless value.is_a?(Proc)
          return value unless value.parameters.empty?
          value.call
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
karafka-1.2.10 lib/karafka/patches/dry_configurable.rb
karafka-1.2.9 lib/karafka/patches/dry_configurable.rb
karafka-1.2.8 lib/karafka/patches/dry_configurable.rb
karafka-1.2.7 lib/karafka/patches/dry_configurable.rb
karafka-1.2.6 lib/karafka/patches/dry_configurable.rb
karafka-1.2.5 lib/karafka/patches/dry_configurable.rb
karafka-1.2.4 lib/karafka/patches/dry_configurable.rb
karafka-1.2.3 lib/karafka/patches/dry_configurable.rb
karafka-1.2.2 lib/karafka/patches/dry_configurable.rb
karafka-1.2.1 lib/karafka/patches/dry_configurable.rb
karafka-1.2.0 lib/karafka/patches/dry_configurable.rb
karafka-1.2.0.beta4 lib/karafka/patches/dry_configurable.rb
karafka-1.2.0.beta3 lib/karafka/patches/dry_configurable.rb
karafka-1.2.0.beta2 lib/karafka/patches/dry_configurable.rb
karafka-1.2.0.beta1 lib/karafka/patches/dry_configurable.rb