Background Jobs dengan ActiveJob
Penjelasan
Beberapa proses (kirim email, generate laporan, proses file besar) sebaiknya tidak dijalankan langsung di dalam request-response cycle karena akan membuat user menunggu lama. ActiveJob adalah abstraksi bawaan Rails untuk mendefinisikan background job secara seragam, terlepas dari backend antrian yang dipakai (Sidekiq, Delayed Job, Solid Queue, dsb — tinggal ganti adapter di konfigurasi). Kamu mendefinisikan job dengan `rails generate job NamaJob`, lalu memanggilnya dengan `NamaJob.perform_later(argumen)` agar dieksekusi secara asynchronous di background, bukan langsung blocking request saat ini.
Contoh Konsep
# app/jobs/kirim_notifikasi_job.rb
class KirimNotifikasiJob < ApplicationJob
queue_as :default
def perform(catatan_id)
catatan = Catatan.find(catatan_id)
# logic kirim email/notifikasi di sini
end
end
# Memanggil job dari controller (tidak blocking)
KirimNotifikasiJob.perform_later(@catatan.id)
Praktikum
Lengkapi pemanggilan job agar dijalankan secara asynchronous (bukan langsung/synchronous).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Di development, ActiveJob default memakai adapter `:async` (jalan di memory, hilang kalau server restart) — untuk production pakai adapter yang persisten seperti Sidekiq atau Solid Queue supaya job tidak hilang kalau server sempat restart.