lib/waterdrop.rb in waterdrop-2.1.0 vs lib/waterdrop.rb in waterdrop-2.2.0

- old
+ new

@@ -1,4 +1,37 @@ # frozen_string_literal: true -# This file is used as a compatibility step -require 'water_drop' +# External components +# delegate should be removed because we don't need it, we just add it because of ruby-kafka +%w[ + concurrent/array + dry-configurable + dry/monitor/notifications + dry-validation + rdkafka + json + zeitwerk + securerandom +].each { |lib| require lib } + +# WaterDrop library +module WaterDrop + class << self + # @return [String] root path of this gem + def gem_root + Pathname.new(File.expand_path('..', __dir__)) + end + end +end + +loader = Zeitwerk::Loader.for_gem +loader.inflector.inflect('waterdrop' => 'WaterDrop') +# Do not load vendors instrumentation components. Those need to be required manually if needed +loader.ignore("#{__dir__}/waterdrop/instrumentation/vendors/**/*.rb") +loader.setup +loader.eager_load + +# Rdkafka uses a single global callback for things. We bypass that by injecting a manager for +# each callback type. Callback manager allows us to register more than one callback +# @note Those managers are also used by Karafka for consumer related statistics +Rdkafka::Config.statistics_callback = WaterDrop::Instrumentation.statistics_callbacks +Rdkafka::Config.error_callback = WaterDrop::Instrumentation.error_callbacks