processing 'phase_metric.created' failed: wrong number of arguments (given 1, expected 0)
Fix Plan: processing 'phase_metric.created' failed: wrong number of arguments (given 1, expected 0)
Changes#
tesla: lib/cupix/pub_sub/subscribers/element_record_synchronizer.rb#
- What:
def created시그니처에event파라미터를 추가하여def created(event)로 변경. 본문은send("_sync_by_#{self.namespace}", event.payload[:model])그대로 유지. - Why:
Cupix::PubSub::Subscribers::Base#call이 항상handler.send(method_name, ActiveSupport::Notifications::Event.new(...))형태로 dispatch 하기 때문에 subscriber 메서드는 반드시event인자를 받아야 함. 같은 파일formula_changed(event)가 동일 패턴을 이미 따르고 있음. - Lines: 5-7
tesla: spec/lib/cupix/pub_sub/subscribers/element_record_synchronizer_spec.rb (신규)#
- What:
phase_metric.created알림 발행 시ElementRecordMetaSyncWorker.perform_async가 호출되는지 검증하는 최소 spec 파일 추가. 기존에 subscriber spec 이 존재하지 않으므로 arity 회귀를 잡을 최소 커버리지를 도입. - Why: 이번 결함은 spec 부재로 부트/CI 시점에 잡히지 않았음. 최소 spec 을 추가하여
def created가 event 를 받을 수 있는지, 그리고 worker enqueue 계약이 지켜지는지 회귀 방지. - Lines: 신규 파일
Acceptance Criteria#
-
grep -n "def created" lib/cupix/pub_sub/subscribers/element_record_synchronizer.rb결과가def created(event)를 포함 -
ruby -c lib/cupix/pub_sub/subscribers/element_record_synchronizer.rbsyntax OK - 신규 spec 파일이 존재하고
Cupix::PubSub::Subscribers::ElementRecordSynchronizer.instance_method(:created).arity == 1를 검증 - Datadog 재발 확인 쿼리:
service:cupixworks-api status:error @environment:production "processing 'phase_metric.created' failed"결과 0건 (배포 후)
Tests#
- 기존 테스트: 없음 (subscriber 관련 spec 파일 부재)
- 신규 테스트:
spec/lib/cupix/pub_sub/subscribers/element_record_synchronizer_spec.rb— arity 검증 +phase_metric.createdpublish 시ElementRecordMetaSyncWorker.perform_async('Phase', ...)호출 검증