Rails Active Storage hiển thị file .gif

Đăng bởi Lưu Đại vào ngày 20-08-2023
Nay mình ngồi thử đọc lại 1 vài bài trên blog thì thấy file gif đang hiển thị đúng khung hình đầu tiên.
Google ra thì biết hóa ra mặc định Rails Active Storage nó chỉ hiển thị đúng khung hình đầu tiên cho file gif thôi. [1]
Nếu muốn sửa lại thì phải vào app/views/active_storage/blobs/_blob.html.erb chỉnh page = nil (bỏ loader page -> gif có bao nhiêu frames thì lấy ra bấy nhiêu). [2]
image.png

Nếu có sử dụng resize thì thêm option coalesce = true nữa để gif hiển thị đúng. 
Giờ thì gif đã hiển thị đúng rồi.

Vậy loader và coalesce là gì? 

loader Sau khi gửi option này vào hàm representation của Rails Active Record, hàm này sẽ gọi tới hàm loader của gem image_processing sâu hơn nữa nó sẽ gọi vào phần mềm minimagik được cài trên máy của bạn. [3]
Hàm loader này dùng để cài file type cho file của bạn. Ví dụ load bao nhiêu page, định dạng file là gì png, pdf,..., file size (height X width)
coalesce option này sẽ được truyền vào hàm convert của image_processing  
Hàm coalesce dùng để resize các page (frame) của gif lại cho nó vừa với khung hình (vậy nên nếu hiển thị file gốc thì không cần chỉ cần khi resize) [4]

Tài liệu tham khảo.