Utility code (feel free to paste it into your codebase) to convert your active records or any ruby object into Sidekiq background jobs.
Note: It is based on Sidekiq but easily adaptable to ActiveJob or similar implementations of background processing for ruby.
Include ExecAsync in your class:
classOrder < ApplicationRecordincludeExecAsyncdefself.notify_deliveries_for_today# Send emails, push notifications, etc...enddefship_it(to:)# Send messages or communicate with an API...enddeftrack_delivery# Run a process that listen for ping signals...endendorder=Order.find(123)# Execute the ship_in in bgorder.exec_async:shipt_it,to: "9703 Pilgrim Street Hagerstown, MD 21740"# Schedule (or delay) the execution for two hoursorder.exec_async_in2.hours,:track_delivery# Customize the sidekiq joborder.exec_async_in2.hours,:track_delivery,queue: :low_priorityIt also supports class methods:
Order.exec_async:notify_deliveries_for_today