ES /docs

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.rb syntax 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.created publish 시 ElementRecordMetaSyncWorker.perform_async('Phase', ...) 호출 검증