Backgrounded ActiveRecord Callbacks

Ryan Sonnek bio photo By Ryan Sonnek

ActiveRecord callbacks are pretty amazing. They are an incredibly useful way to declare specific behavior that is tied to the lifecycle of your model objects.

One very common pattern is to perform "house keeping" activities when an object is updated. This could mean anything from updating related model objects to logging or updating usage statistics. Here’s a simple example.

class User
  after_create :update_stats

  def update_stats
    # do your heavy lifting here
  end
end

The majority of these lifecycle callbacks are not in the critical path for saving your model object and should be pushed to the background to improve end user response times. The backgrounded API makes transitioning ActiveRecord callbacks to the background incredibly easy.

class User
  backgrounded :update_stats

  after_create :update_stats_backgrounded

  def update_stats
    # do your heavy lifting here
  end
end

As a side note, the backgrounded gem is now available on gemcutter so that we can join the cool kids club!