이번 주 Rails 업데이트의 주요 내용은 다음과 같습니다:
-
update_column(s)
에touch
옵션 추가: ETL(Extract, Transform, Load) 프로세스에서updated_at
타임스탬프를 활용하는 방식을 더욱 효율적으로 개선했습니다. 이전에는update_column
사용 후 별도로touch
메서드를 호출해야 했으나, 이제는 한 번에 처리할 수 있게 되어 불필요한 작업이 줄어들었습니다. -
오류 페이지에서 코드 에디터 접근 지원: 오류 페이지에서 Atom, Zed 등 일반적인 코드 에디터로 직접 파일을 열 수 있는 기능이 추가되어 디버깅 과정이 훨씬 간소화되었습니다. 이는 개발자가 오류 발생 지점을 신속하게 파악하고 수정할 수 있도록 돕는 중요한 개선점입니다.
-
잘못된 인코딩 쿼리 문자열 오류 처리 개선: 잘못된 인코딩을 가진 쿼리 문자열 키로 인해 발생하던 500 서버 오류(Server Errors) 문제가 해결되었습니다. 이제 이러한 요청은 앱 예외로 보고되지 않아 불필요한 오류 로그를 줄이고 시스템 안정성을 높였습니다.
-
다운 마이그레이션 로그 메시지 개선: 마이그레이션을 되돌릴 때(reverting a migration) 로그 메시지가 “Migrating to [version]”에서 “Reverting [version]”으로 명확하게 변경되어, 마이그레이션 상태를 더욱 정확하게 파악할 수 있게 되었습니다.
-
ORDER
컬럼 없는 파인더 메서드 오류 발생: 모델에 정렬(ORDER
) 컬럼이 없을 때last
나find_nth
와 같은 파인더(finder) 메서드에서ActiveRecord::MissingRequiredOrderError
가 발생하도록 변경되었습니다. 이는 명시적인 정렬 기준이 없는 경우 발생할 수 있는 잠재적인 데이터 일관성 문제를 사전에 방지합니다. -
MissingController
오류 시 500 반환:MissingController
오류가 발생했을 때 404(라우팅 오류) 대신 500(프로그래밍 오류)을 반환하도록 수정되었습니다. 이는 컨트롤러가 존재하지 않는 상황을 단순한 라우팅 문제가 아닌, 애플리케이션의 프로그래밍 오류로 간주하여 더 적절한 오류 처리를 유도합니다. -
Active Record 배치 처리 최적화:
in_batches
메서드에서use_ranges: true
옵션 사용 시 SQL 쿼리에OFFSET
을 활용하여 Active Record 배치 처리 효율이 더욱 향상되었습니다. 이는 대량의 데이터를 처리할 때 성능 개선에 기여합니다. -
ActiveSupport::SafeBuffer
최적화: 대부분의SafeBuffer
인스턴스가 변경되지 않는다는 가정을 바탕으로 불필요한 메모리 할당을 줄이는 최적화가 이루어졌습니다. -
RequestForgeryProtection#normalize_action_path
메서드 비공개 설정: 의도치 않게 공개될 수 있었던RequestForgeryProtection#normalize_action_path
메서드가private
으로 설정되었습니다. -
tsort
런타임 종속성 추가: Ruby 표준 라이브러리에서 추출된tsort
가 이제 gem으로 포함되어 Railties의 런타임 종속성으로 추가되었습니다. -
Propshaft 1.2.0 업그레이드: 자산 파이프라인 라이브러리인 Propshaft가 1.2.0 버전으로 업그레이드되었습니다.
이번 주에는 총 16명의 기여자가 Rails 코드베이스 개선에 참여하며 프레임워크 발전에 기여했습니다.