Skip to content

Getting Started

John Knapp edited this page Feb 17, 2021 · 77 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:
class HardWorker
  include Sidekiq::Worker

  def perform(name, count)
    # do something
  end
end

Your perform method arguments must be simple, basic types like String, integer, boolean that are supported by JSON. Complex Ruby objects will not work.

  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)
HardWorker.perform_at(5.minutes.from_now, 'bob', 5)

Note: The 5.minutes.from_now syntax is Rails specific. If you are not using Rails, use unix epoch thus:

HardWorker.perform_at(Time.now+5*60, 'bob', 5)
  1. Start sidekiq from the root of your Rails application so the jobs will be processed:
bundle exec sidekiq

That's it.

Plain Ruby

por.rb in examples/ is a "Plain Old Ruby" example.

Watch an overview:

Getting Started

Next: The Basics

Clone this wiki locally