Study
Ruby on Rails

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).

Editor Latihan

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.