2014-06-11 10 views
9

Ich verwende Sidekiq 3.1.2 ohne Rails wie folgt laden:Sidekiq ohne Rails nicht Arbeiter Klassen

$ sidekiq -vr sidekiq.rb 

sidekiq.rb sieht wie folgt aus:

($LOAD_PATH << '.' << 'lib' << 'lib/workers').uniq! 
require 'lookup_worker' 

lib/Arbeiter/lookup_worker.rb sieht wie folgt aus:

require 'sidekiq' 

class LookupWorker 
    include Sidekiq::Worker 

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

Aber wenn ich in irb bin und versuchen

> LookupWorker.perform_async('asdf') 

es gibt mir dies:

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 

Was bin ich?

Antwort

14

So ...

In LookupWorker, require wurde zwischen sidekiq der Edelstein und sidekiq das Skript auf der Linie 1.

Meine sidekiq.rb benötigt werden umbenannt als sidekiq_script.rb (oder irgendetwas anderes wirklich) verwirrt. Gotcha ist nur, ich muss das Verzeichnis enthalten, wenn sidekiq ausgeführt wird:

$ sidekiq -r ./sidekiq_script.rb 

nicht

$ sidekiq -r sidekiq_script.rb 

Nun, ich fühle mich ein wenig dumm dafür.

+0

Aus meiner jüngsten Erfahrung denke ich, dass sich das auch auf 'ruby'-Befehlszeilen' -r'quire-Optionen bezieht. – PJSCopeland