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