lib/noticent/definitions/scope.rb in noticent-0.0.1.pre.pre vs lib/noticent/definitions/scope.rb in noticent-0.0.1

- old
+ new

@@ -3,25 +3,29 @@ module Noticent module Definitions class Scope attr_reader :name attr_reader :payload_class + attr_reader :check_constructor - def initialize(config, name, payload_class: nil) + def initialize(config, name, payload_class: nil, check_constructor: true) @config = config @name = name - suggeste_name = config.base_module_name + "::#{name.capitalize}Payload" - @payload_class = payload_class.nil? ? suggeste_name.constantize : payload_class + @check_constructor = check_constructor + + sub_module = @config.use_sub_modules ? '::Payloads::' : '::' + suggested_name = config.base_module_name + sub_module + "#{name.capitalize}Payload" + @payload_class = payload_class.nil? ? suggested_name.constantize : payload_class rescue NameError - raise BadConfiguration, "scope #{suggeste_name} class not found" + raise BadConfiguration, "scope #{suggested_name} class not found" end - def alert(name, &block) + def alert(name, constructor_name: nil, &block) alerts = @config.instance_variable_get(:@alerts) || {} raise BadConfiguration, "alert '#{name}' already defined" if alerts.include? name - alert = Noticent::Definitions::Alert.new(@config, name: name, scope: self) + alert = Noticent::Definitions::Alert.new(@config, name: name, scope: self, constructor_name: constructor_name.nil? ? name : constructor_name) @config.hooks&.run(:pre_alert_registration, alert) alert.instance_eval(&block) if block_given? @config.hooks&.run(:post_alert_registration, alert) alerts[name] = alert