이번 주 Rails 코드베이스의 주요 변경 사항들은 다음과 같습니다:
- 보안 및 인증 개선:
has_secure_password
를 사용하는 픽스처에서 비밀번호 해시가 동적으로 생성되지 않고 정적 해시로 생성되도록 변경하여 테스트 일관성을 높였습니다.has_secure_password
의 비밀번호 유효성 검사 로직이 강화되어, 원본 비밀번호에 공백만 포함된 경우에도 비밀번호 확인이 올바르게 검증되도록 일관성을 확보했습니다.config/credentials
내의 모든 키 파일을.gitignore
에 추가하여 중요한 파일이 실수로 커밋되는 것을 방지함으로써 보안을 강화했습니다.
- 호환성 및 안정성:
- JRuby 환경에서 Bundler 플랫폼이 추가되지 않도록 수정하여 젬 설치 시 발생하는 문제를 해결했습니다.
ActiveSupport::Gzip.compress
가 항상 gzip 타임스탬프를 0으로 설정하여 압축된 데이터 비교 시 불안정한 테스트를 제거하고 일관된 출력을 생성하도록 개선했습니다.HashWithIndifferentAccess#transform_keys!
에서 키 변경 시 충돌로 인해 일부 키가 손실될 수 있는 버그를 수정했습니다.- PostgreSQL 18 이상 버전과 함께
pg
젬 1.6.0 미만 버전을 사용할 경우 경고를 발생시켜PG::Connection#cancel
의 호환성 문제를 예방합니다. redis-rb
5.4.1 버전과의 비호환성 버그가 해결되어 Action Cable이 해당 버전과 호환되도록 수정했습니다.
- 성능 및 효율성:
- 인증 로직 내에서 GCP(Google Cloud Platform) 메타데이터 서버에 대한 불필요한 호출을 제거하여 잠재적인 지연 시간과 서버 부하를 줄였습니다.
- 개발자 편의성 및 확장성:
- 초기화(initializers)에서 참조되는 Active Model 자동 로드 상수(예:
active_model_error
,active_model_secure_password
)에 대한 로드 훅을 추가하여 상수를 참조하기 쉽게 만들었습니다. - Rails 헬스 컨트롤러가 JSON으로 응답할 수 있도록
render json
기능을 추가하여 API 전용 애플리케이션 지원을 개선했습니다. - 데이터베이스 어댑터별 동작을 사용자 정의할 수 있는 기본 클래스인
ActiveRecord::Tasks::AbstractTasks
를 도입하여 어댑터별 처리를 향상시켰습니다. - 스키마 로드 시 테스트 데이터베이스가 초기화되는 것을 방지하여 테스트 스위트의 신뢰성을 높였습니다.
javascript_tag
,javascript_include_tag
,stylesheet_link_tag
에서nonce: false
설정 시 nonce 속성이 제거되도록 변경했습니다.ActionDispatch::Http::URL
에서 사용자 정의 도메인 추출 클래스를 사용할 수 있도록 허용하여 도메인 및 서브도메인 추출의 유연성을 제공합니다.config.action_text.attachment_tag_name
이 설정된 경우 Action Text 픽스처가 Action Text 첨부 파일에 대한 올바른 태그 이름을 사용하도록 업데이트했습니다.- Action View의 태그 헬퍼 공개 API를 정리하여 유지보수성과 명확성을 개선했습니다.
- 초기화(initializers)에서 참조되는 Active Model 자동 로드 상수(예:
이러한 변경 사항들은 Rails 프레임워크의 전반적인 안정성, 보안, 성능 및 개발 편의성을 꾸준히 향상시키려는 노력을 보여줍니다.