본문 바로가기
Dev/Ruby

Rails 5.2의 쓰레기 기능: Active Storage

by ryush00 2019. 5. 4.

Ruby on Rails 5.2에서 Active Storage라는 새로운 기능이 추가되었습니다. 기존 Paperclip등의 Gem에서 수행하던 파일 저장 기능이 레일즈 자체에서 구현되었죠. GCS, S3, ASS등 다양한 provider에 연결해서 파일을 저장할 수 있다는 점도 확실히 매력적입니다.

저 역시 마인리스트의 Rails 버전을 5.2로 올리면서 Paperclip Gem이 Active Storage가 나온다면서 deprecation할 예정이라고 하길래, Paperclip에서 Active Storage로 마이그레이션을 시도했었습니다. 파일 이전 스크립트까지 다 짜고 실제 이전까지 테스트해봤지만, 싹 다 롤백하고 다시 Paperclip으로 돌아왔습니다. 이유가 무엇일까요?

치명적인 버그

예를 들어 512x512짜리의 2MB 이하의 PNG 이미지 파일을 업로드한다고 가정해봅시다. 정상적이라면 업로드 후 임시 폴더에 저장된 이미지 파일의 파일 검증이 모두 끝난 후 스토리지에 업로드되는 게 당연한데, Active Storage는 모델의 Validation이 끝나기도 전에 먼저 사진을 업로드해버립니다.. 즉 서버측 이미지 검증이 제대로 이뤄질 수 없는 것이죠.

33303번 이슈에서 해당 버그는 수정되었지만, breaking change라서 6.0이 나오기까지 기다려야 합니다.

많은 사람들이 5.2로 해당 버그 픽스의 백포팅을 원했지만, 현재까지 아무 진척이 없는 걸 봐서는 6.0이나 기다려야겠습니다. 그런데 5.2에서 Active Storage 쓰는 사람이 있기나 할까요?

 

참고 자료

https://github.com/rails/rails/issues/32449

https://github.com/rails/rails/pull/33303

 

댓글