[Feature Request] async option for after_commit ActiveRecord hook

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[Feature Request] async option for after_commit ActiveRecord hook

Chad Wilken
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

 
private

 
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


--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Feature Request] async option for after_commit ActiveRecord hook

Xavier Noria
There’s something that makes me wonder: this async option probably makes sense only in after_commit callbacks, because it seems rare that you want to run something later even if there’s a rollback. So, the generic “Callback” name in the proposed job class is really not so generic in reality.

Taking that into account, I see this proposal as a too exceptional API to deserve being in core.

Of course, you could decorate after_commit in ApplicationRecord to do what you want if async is present and delegate to super.

--
Sent from Gmail Mobile

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Feature Request] async option for after_commit ActiveRecord hook

Chad Wilken
Sounds good, that makes sense.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.