CodeSOD: 거짓이 참일 때 노트

CodeSOD: 거짓이 참일 때

릴리스는 "dry_run" 기능이 있는 Ruby on Rails API에 새로운 도구를 통합했습니다. 이 기능은 서비스가 변경 사항을 적용하지 않고 계산할 수 있도록 했습니다. 새로운 도구가 JSON 형식으로 {"dry_run": false}를 보냈지만 서비스가 이를 true로 해석하면서 문제가 발생했습니다. 이 예상치 못한 동작은 문자열 또는 nil 입력을 처리하도록 설계된 헬퍼 메서드인 param_true?에서 비롯되었습니다. 메서드의 논리, 특히 !param_value는 실제 boolean falsetrue로 잘못 평가했습니다. 이 문제는 POST/PATCH/PUT 요청이 boolean 값을 가진 JSON 본문을 보내기 시작할 때까지 눈치채지 못했을 가능성이 높습니다. 이전에는 GET 요청이 매개변수의 문자열 표현만 보냈을 것입니다. 값을 검색한 후 params.key?(param_name)를 중복으로 확인하는 메서드도 번거로운 점으로 지적되었습니다. 핵심 문제는 헬퍼 메서드가 boolean false 값을 잘못 처리한 것이었습니다. 이로 인해 dry_run 플래그가 일관되게 잘못 식별되었습니다. 매개변수 유형에 대한 원래 설계의 가정은 근본 원인으로 보입니다.