没有Rails的Sidekiq不会加载工作类

PJS*_*and 9 ruby sidekiq

我正在使用没有Rails的 Sidekiq 3.1.2 ,如下所示:

$ sidekiq -vr sidekiq.rb
Run Code Online (Sandbox Code Playgroud)

sidekiq.rb看起来像这样:

($LOAD_PATH << '.' << 'lib' << 'lib/workers').uniq!
require 'lookup_worker'
Run Code Online (Sandbox Code Playgroud)

lib/workers/lookup_worker.rb看起来像这样:

require 'sidekiq'

class LookupWorker
  include Sidekiq::Worker

  def perform(*args)
    puts "LookupWorker#perform fired with arguments #{args.map(&:inspect).join(', ')}"
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,当我在irb并尝试

> LookupWorker.perform_async('asdf')
Run Code Online (Sandbox Code Playgroud)

它给了我这个:

WARN: {"retry"=>true, "queue"=>"default", "class"=>"LookupWorker", "args"=>["asdf"], "jid"=>"8c278868c5f05ec9beb1dbae", "enqueued_at"=>1402457226.9612548}
WARN: uninitialized constant LookupWorker
WARN: [backtrace, none of it from my code]
ERROR: Sidekiq::Processor crashed!
NameError: uninitialized constant LookupWorker
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

PJS*_*and 15

所以...

LookupWorker,第1行的宝石和脚本require之间sidekiq的混淆sidekiq.

sidekiq.rb需要重命名为sidekiq_script.rb(或其他任何真正的).只有陷阱,我必须在运行sidekiq时包含目录:

$ sidekiq -r ./sidekiq_script.rb
Run Code Online (Sandbox Code Playgroud)

$ sidekiq -r sidekiq_script.rb
Run Code Online (Sandbox Code Playgroud)

我觉得这有点愚蠢.