Jadi, ceritanya saya sedang mengembangkan aplikasi berbasis Laravel yang di dalamnya memuat gambar sebagai komponen penting yang harus ada. Seperti kita tahu, memanipulasi gambar dalam pemrograman itu lumayan sulit. Untungnya, sudah tersedia beberapa library yang memudahkan dan mempersingkat waktu dalam manajemen gambar tersebut. Salah satunya adalah Intervention Image.
Dalam library Intervention Image, terdapat fitur Cache yang memudahkan pengembang memanipulasi gambar dalam aplikasi.
Contoh kasus:
Pengguna mengunggah berkas gambar dengan ukuran 1 MB. Kemudian oleh aplikasi gambar tersebut disimpan ke storage dalam ukuran sebenarnya, tanpa perubahan sedikitpun.
Adalah hal yang keliru bukan ketika aplikasi menampilkan gambar tersebut ke peramban web dalam ukuran sebenarnya? Ukuran sebesar itu, terlalu berat untuk dimuat di browser.
Oleh karenanya, kita perlu memanipulasi gambar tersebut dengan beberapa cara, misal menurunkan kualitas gambar, atau bisa juga dengan me-resize besaran piksel gambar. Yang mana, imbasnya akan memperkecil ukuran gambar serta mempercepat ketika dimuat dan ditampilkan di browser.
Nah, library Intervention Image tersebut sudah lebih dari cukup untuk membantu saya memudahkan pekerjaan manipulasi gambar tersebut.
Sialnya, entah kenapa beberapa hari ini datang masalah yang menghambat pekerjaan.
Library Cache Tetiba Berhenti Berfungsi
Fungsi cache tiba-tiba saja berhenti berfungsi tanpa saya sadari penyebabnya. Saya mencoba melakukan debugging dengan beberapa cara, seperti membaca berkas log (siapa tau memang terjadi kesalahan), meneliti baris demi baris script library tersebut, serta melakukan beberapa hal bodoh lainnya.
Hasinya nihil. 😶
Tidak ada pesan kesalahan, gambar juga ditemukan. Hanya saja output ke browser tidak sesuai dengan apa yang diharapkan.
Mungkin permasalahan terjadi di library eksternal, seperti GD atau ImageMagick misalnya. Anehnya, library tersebut berjalan sebagaimana mestinya pada aplikasi yang berbeda dan dengan environment yang sama.
Gambar yang ditampikan di browser selalu seperti berikut.
Lihat gambar di atas? Hanya kotak kecil tersebut yang nampak.
Saya berusaha membuat, fitur yang sama menggunakan Intervention Image, hasilnya serupa. Memang, sumber masalahnya ternyata dari Intervention Image, bukan dari fitur cache-nya saja.
%ads-link%
Alternatif lain, saya menggunakan library cache serupa dari developer yang berbeda. Beberapa di antaranya tidak sesuai yang diharapkan, ada juga yang sulit untuk diimplementasikan, repotnya lagi kalau tidak kompatibel dengan framework Laravel.
Upgrade Laravel yang Gagal
Kasus kedua ini, sebenarnya tidak penting-penting amat. Versi Laravel yang sebelumnya digunakan adalah 5.1, terbesit niat untuk meng-upgrade-nya ke versi lebih tinggi, versi 5.2.
Sudah saya ikuti langkah demi langkah sesuai petunjuk yang tertulis di dokumentasinya, namun hasilnya tidak sesuai yang diinginkan.
Beberapa saran yang ada di dunia maya saya ikuti dengan harapan dapat menyelesaikan error tersebut, namun tak ada satupun yang berhasil. Mungkin saya kurang berusaha keras, saya menyerah.
Dan pada akhirnya...
Solusi
Untuk menyelesaikan kedua kasus di atas, akhirnya saya mengunduh ulang Laravel versi terbaru, versi 5.2. Kemudian menambahkan beberapa library seperti pada aplikasi sebelumnya. Kemudian dilakukan beberapa ujicoba untuk memastikan semua fitur berjalan dengan lancar.
Yes! Intervention Image Cache bejalan sebagaimana mestinya.
Awalnya, saya menyalin semua aplikasi sebelumnya ke aplikasi yang baru, termasuk di dalamnya Controllers, Models serta Resources yang berisi Lang dan Views. Hal ini menyebabkan cache dari Intervention Image berulah lagi. Saya pikir, ada yang salah di salah satu script yang saya buat, tapi saya tidak tau di mana persisnya. Huh! 😤
Langkah selanjutnya saya lakukan seperti di atas, mengunduh ulang Laravel versi terbaru. Hanya saja migrasi dari aplikasi lama ke aplikasi baru saya lakukan langkah demi langkah. Ya, saya menyalin ulang satu demi satu berkas controller, model, dan view, serta kemudian menulis route baris demi baris.
Repot memang! tapi cara di atas dilakukan untuk memastikan library yang saya butuhkan berjalan dengan baik serta berharap dapat menemukan penyebab matinya salah satu fitur dari Intervention Image tersebut.
Sampai saat ini, sembari memindahkan aplikasi lama ke aplikasi baru, semua berjalan sebagaimana mestinya.
Hal kecil seperti ini ternyata cukup menguras tenaga dan menghambat pekerjaan berhari-hari lamanya. Semoga saja besok-besok tidak kenapa. 😄