Rails: Starting Sidekiq on Heroku

后端 未结 7 1441
心在旅途
心在旅途 2020-12-12 19:00

I\'m having a problem getting Sidekiq up and running on my Heroku deployed Rails app. I have my app working fine in development (and on Heroku without Sidekiq).

I cr

7条回答
  •  心在旅途
    2020-12-12 19:41

    Complementing gdurelle answer:

    You do need some config with Heroku for Sidekiq:

    1) Have the Sidekiq and Redis gems installed (in gemfile and bundled), in my case:

    Gemfile

    gem 'redis', '~> 3.1'
    gem 'sidekiq', '~> 2.7', '>= 2.7.1'
    

    2) Add a worker, if you don't have any workers created locally I suggest you create at least one, just in case, use this:

    rails g sidekiq:worker Hard # will create app/workers/hard_worker.rb
    

    should create this:

    app/workers/hard_worker.rb

    class HardWorker
      include Sidekiq::Worker
      def perform(name, count)
        # do something
      end
    end
    

    3) Add the Redis add-on (in my case Heroku Redis):

    heroku addons:create heroku-redis:hobby-dev
    

    4) Add your redis.rb file, in my case:

    config/initializers/redis.rb

    $redis = Redis.new(url: ENV["REDIS_URL"])
    

    5) Add Procfile or config/sidekiq.yml or both, here are mine:

    Procfile

    worker: bundle exec sidekiq -c 1 -q default -q mailers 
    

    which you can create easier by pasting this in your terminal

    echo "worker: bundle exec sidekiq -c 1 -q default -q mailers" > Procfile
    

    config/sidekiq.yml

    :concurrency: 1
    :queues:
      - [mailers, 7]
      - [default, 5]
    

    6) Most important part go here: and turn on the switch for your worker, click on the pencil and then turn on the missing switch. Things should be working fine now, have a great day!

提交回复
热议问题