ActiveJob 및 직렬화 개선
- ActiveJob 배열 직렬화 개선: ActiveJob 인자 직렬화 시 배열 처리 방식을 개선하여 데이터의 정확한 왕복(round-trip)을 보장하고, 기존의 불일치 및 버그를 수정했습니다.
- ActiveJob::Arguments.serialize 동작 복원: 하위 호환성을 위해
ActiveJob::Arguments.serialize
메서드의 이전 동작을 정확히 복원하여 기존 애플리케이션의 예기치 않은 직렬화 변경을 방지합니다. - 작업 인자 내 날짜/시간 파싱 수정:
ActiveSupport.parse_json_times
가 활성화될 때 작업 인자 내 날짜/시간 값이 일반 문자열로 처리되던 문제를 해결하여, 의도된Time
객체 유형이 직렬화 과정에서 유지되도록 했습니다.
개발자 도구 및 디버깅 환경 개선
/rails/info/routes
에 엔진 라우트 표시:/rails/info/routes
페이지에 애플리케이션에 마운트된 모든 엔진의 라우트가 포함되도록 하여 엔진 사용 시 디버깅 편의성을 높였습니다.- 라우트 시각화 도구 정규식 레이블 개선: 라우트 시각화 도구의 출력 가독성을 향상시키기 위해 정규식/제약 조건이 있는 라우트에 더 나은 레이블을 추가했습니다.
- 개발 환경에서만 구조화된 디버그 이벤트 발생: 구조화된 디버그 이벤트가 개발 환경에서만 발생하도록 변경하여 테스트/프로덕션 환경에서의 오버헤드와 불필요한 정보 생성을 줄였습니다.
- 테스트 시 디버그 이벤트 억제: ActionController 테스트 실행 중 디버그 수준 이벤트가 발생하지 않도록 하여 로그 노이즈를 줄이고 테스트 결과를 예측 가능하게 했습니다.
- ActionController 로거 비활성화 허용:
ActionController
로거를nil
또는false
로 설정하여 비활성화할 수 있는 기능을 추가했습니다.
인프라 및 성능 최적화
- Active Record 스킵 시 CI 설정에서 시드 단계 제외: Active Record가 스킵된 경우 CI 구성 템플릿에서
db:seed
단계를 추가하지 않도록 하여 CI 실패 또는 불필요한 단계를 방지합니다. deliver_all_later
기능 개선:deliver_all_later
로 예약된 메일러가 인라인으로 처리되거나 중복되지 않도록 여러 개선사항이 적용되었으며, 큐 및 우선순위와 같은 작업 옵션 전달을 지원합니다.- PostgreSQL 기본 키 조회 최적화: PostgreSQL에서 기본 키를 검색하는 효율성을 향상시켜 테이블 스키마 검사 및 마이그레이션/반영 기반 작업 속도를 높였습니다.
- Docker 빌드에서 Bootsnap 사전 컴파일 수정: Docker 빌드 내에서 Bootsnap 캐시 사전 컴파일과 관련된 문제를 해결하여 컨테이너 환경에서 컴파일 캐시 설정이 올바르게 작동하도록 보장합니다.
- Minitest 미사용 시 Auth 제너레이터 테스트 스킵: 인증 제너레이터가 Minitest를 사용하지 않는 애플리케이션에서는 테스트 파일을 생성하지 않도록 업데이트했습니다.