lib/deimos/config/configuration.rb in deimos-ruby-1.11.2 vs lib/deimos/config/configuration.rb in deimos-ruby-1.12.0

- old
+ new

@@ -16,20 +16,34 @@ end # :nodoc: after_configure do Phobos.configure(self.config.phobos_config) + if self.config.schema.use_schema_classes + load_generated_schema_classes + end self.config.producer_objects.each do |producer| configure_producer_or_consumer(producer) end self.config.consumer_objects.each do |consumer| configure_producer_or_consumer(consumer) end validate_consumers validate_db_backend if self.config.producers.backend == :db end + # Loads generated classes + def self.load_generated_schema_classes + if Deimos.config.schema.generated_class_path.nil? + raise 'Cannot use schema classes without schema.generated_class_path. Please provide a directory.' + end + + Dir["./#{Deimos.config.schema.generated_class_path}/**/*.rb"].sort.each { |f| require f } + rescue LoadError + raise 'Cannot load schema classes. Please regenerate classes with rake deimos:generate_schema_models.' + end + # Ensure everything is set up correctly for the DB backend. def self.validate_db_backend begin require 'activerecord-import' rescue LoadError @@ -66,10 +80,11 @@ klass.class_eval do topic(kafka_config.topic) if kafka_config.topic.present? && klass.respond_to?(:topic) schema(kafka_config.schema) if kafka_config.schema.present? namespace(kafka_config.namespace) if kafka_config.namespace.present? key_config(**kafka_config.key_config) if kafka_config.key_config.present? + schema_class_config(kafka_config.use_schema_classes) if kafka_config.use_schema_classes.present? end end define_settings do @@ -258,10 +273,18 @@ setting :registry_url, 'http://localhost:8081' # Local path to look for schemas in. # @return [String] setting :path + + # Local path for schema classes to be generated in. + # @return [String] + setting :generated_class_path, 'app/lib/schema_classes' + + # Set to true to use the generated schema classes in your application + # @return [Boolean] + setting :use_schema_classes, false end # The configured metrics provider. # @return [Metrics::Provider] setting :metrics, Metrics::Mock.new @@ -299,10 +322,13 @@ # @return [String] setting :namespace # Key configuration (see docs). # @return [Hash] setting :key_config + # Configure the usage of generated schema classes for this producer + # @return [Boolean] + setting :use_schema_classes end setting_object :consumer do # Consumer class. # @return [String] @@ -321,9 +347,12 @@ setting :key_config # Set to true to ignore the consumer in the Phobos config and not actually start up a # listener. # @return [Boolean] setting :disabled, false + # Configure the usage of generated schema classes for this consumer + # @return [Boolean] + setting :use_schema_classes # These are the phobos "listener" configs. See CONFIGURATION.md for more # info. setting :group_id setting :max_concurrency, 1