Setup Active Storage
Sebelum memulai, pastikan kita sudah melakukkan setup Active Storage. Jalankan perintah dibawah ini untuk init setup active storage.
Dengan perintah ini, kita akan dibuatkan file config/storage.yml dan database migration.
rails active_storage:install
rails db:migrate
Setup Gem
Gunakan gem aws-sdk-s3
, selain support untuk digunakan bersama S3, gem ini juga support jika kita ingin menggunakan Digital Ocean sebagai layanan penyimpanan file.
gem "aws-sdk-s3"
Setup Digital Ocean Spaces
Digital Ocean Space digunakan untuk penyimpanan file. Untuk cara setting nya, bisa dilakukkan dengan klik di menu Spaces pada dashboard sidebar dan akan menampilkan halaman seperti berikut ini :
Harga dari Spaces yang disediakan oleh Digital Ocean ini ini adalah 5$ per bulan, cukup terjangkau di kantong.
Tekan tombol Create a Space untuk membuat Space baru, setelah itu kita akan diarahkan untuk konfigurasi detail mengenai Space yang akan kita buat ini. Set konfigurasi sesuai kebutuhan.
Jika sudah berhasil membuat Spaces, kita akan diarahkan ke halaman ini, halaman yang nantinya akan kita gunakan untuk mengelola seluruh file yang sudah berhasil kita upload ke Spaces.
Beberapa hal yang bisa kita lakukan disini :
- Manage Folder : Create, Delete, Update folder
- Manage File : Create, Delete, Update file
Setup Space Access Key
Agar kita bisa melakukkan koneksi antara Spaces dan aplikasi yang kita buat, perlu membuat Access Key terlebih dahulu :
API > Space Access Keys > Generate New Key
klik Generate New Key jika kita belum memiliki Access Key dan lakukan pengisian data sesuai kebutuhan.
Setup Rails Active Storage
Pada langkah sebelumnya kita sudah membuat Spaces dan Access Key. Sekarang saat nya kita koneksikan antara aplikasi dengan dengan Spaces.
Edit file config/storage.yml yang sudah di generate di langkah pertama. Kemudian sesuaikan dengan key yang sudah kita buat sebelumnya.
Contoh bisa dilihat pada gambar dibawah ini :
Karena upload file ini akan kita jalankan di environment production, maka kita perlu merubah config di config/environments/production.rb, contoh sebagai berikut :
config.active_storage.service = :digitalocean
Testing
Jika sudah melakukkan upload file pada aplikasi, hasil pada Spaces akan menampilkan seperti ini. Tandanya file kita sudah berhasil di upload.
Active Storage Image Manipulation
Beberapa basic perintah yang bisa kita gunakan ketika menggunakan Active Storage untuk manipulasi file.
- Mendapatkan url dari file yang sudah di upload
url_for(user.profile_photo)
- Mengahapus file
user.profile_photo.purge
- Mengecek file exists
user.profile_photo.persisted?
- Melampirkan file url pada link tag html
# Untuk Link Download
<%= link_to document.filename, rails_blob_path(document, disposition: 'attachment') %># Untuk Link Preview
<%= link_to document.filename, rails_blob_path(document, disposition: 'preview') %>