I have quite a few places where I enqueue a job in an after_commit hook but the job just re-instantiates the object and calls a method on it. It would be handy if you could pass async: true to the callback to have it executed asynchronously. Before writing the code and opening a pull request I wanted to see if this would be of use to anyone else.
The way I see it working:
class Post < ApplicationRecord after_commit :notify_subscribers, on: :create, async: true
def notify_subscribers # Some long running code that needs to be async end end
class AsyncCallbackJob < ApplicationJob def perform(record, method) record.send(method) end end