From f242c46118095cc76b13c04356a31cdadf874c6f Mon Sep 17 00:00:00 2001 From: tylercschneider Date: Wed, 29 Jul 2026 13:54:36 -0400 Subject: [PATCH] Treat an undecided rule as no rule MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The catalog task scaffolds a rules file listing every event with no value. Those keys made the events hash non-empty, so routes? was true while resolution returned nil — meaning running event_engine:catalog broke emit for every event until every rule was filled in. An app with only handlers and no processors could not emit at all after building its catalog. Co-Authored-By: Claude Opus 5 (1M context) --- lib/event_engine/processing_rules.rb | 2 +- test/lib/event_engine/processing_rules_test.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/event_engine/processing_rules.rb b/lib/event_engine/processing_rules.rb index c65bfd6..b5aeb2c 100644 --- a/lib/event_engine/processing_rules.rb +++ b/lib/event_engine/processing_rules.rb @@ -29,7 +29,7 @@ def for(event_name:, pack:) end def any? - !@default.nil? || @packs.any? || @events.any? + processor_names.any? end def processor_names diff --git a/test/lib/event_engine/processing_rules_test.rb b/test/lib/event_engine/processing_rules_test.rb index 0366070..b8b9e84 100644 --- a/test/lib/event_engine/processing_rules_test.rb +++ b/test/lib/event_engine/processing_rules_test.rb @@ -33,6 +33,10 @@ def rules_file(contents) refute_predicate ProcessingRules.new, :any? end + test "reports no rules when every event is listed but undecided" do + refute_predicate ProcessingRules.new(events: { cow_fed: nil, barn_built: nil }), :any? + end + test "loads the rules from a yaml file" do path = rules_file(<<~YAML) default: inline