Getting Started

Mauro Ponce edited this page Jun 16, 2017 · 43 revisions

Sidekiq makes every effort to make usage with modern Rails applications as simple as possible. Please see the ActiveJob page if you want to use Sidekiq with ActiveJob.

Rails

  1. Add sidekiq to your Gemfile:
gem 'sidekiq'
  1. Add a worker in app/workers to process jobs asynchronously:
rails g sidekiq:worker Hard # will create app/workers/hard_worker.rb
class HardWorker
  include Sidekiq::Worker
  def perform(name, count)
    # do something
  end
end
  1. Create a job to be processed asynchronously:
HardWorker.perform_async('bob', 5)

Note that perform is an instance method, whereas perform_async is called on the class.

You can also create a job to be processed in the future:

HardWorker.perform_in(5.minutes, 'bob', 5)

You can also create jobs by calling the delay method on a class method:

User.delay.do_some_stuff(current_user.id, 20)
  1. Start sidekiq from the root of your Rails application so the jobs will be processed:
bundle exec sidekiq

That's it. You do not need to turn on thread-safe mode. You probably should tune your Active Record pool size if your workers are using Active Record. See Advanced Options for more detail.

Plain Ruby

There are some non-Rails examples in examples/. por.rb is a "Plain Old Ruby" example, and sinkiq.rb is a Sinatra integration.

Watch an overview:

Getting Started

Next: The Basics