Perché sto diventando livello di stack troppo in profondità, mentre innescando un processo utilizzando resque-status?
-
29-09-2019 - |
Domanda
Questa è la traccia dello stack che appare sull'interfaccia resque-web: http://gist.github.com/ 396893
Ci si può controllare alcune versioni gemma che stavo usando.
Ora ho fatto alcuni aggiornamenti che cercano di risolvere il problema, qui ci sono le versioni attuali gemma:
Redis (2.0.3)
Redis-namespace (0.5.0)
redisk (0.2.1)
Resque (1.9.5)
Resque-scheduler (1.9.2)
Resque-stato (0.1.4)
Ho anche scritto un semplice operaio di scartare eventuali errori di programmazione da parte mia, ma anche senza alcun successo. Il codice operaio test è (anche se il bug si verifica con qualsiasi codice utilizzando resque-stato che ho provato):
class SimpleStatusWorker < Resque::JobWithStatus
def perform
60.times do |i|
sleep 1
at(i,60,"At #{num} of #{total}")
end
end
end
(L'inizializzatore appropriato viene caricato nell'inizializzazione ambiente rotaie).
Soluzione
No, non si tratta di IIS. Si tratta di Vlad. Vlad definisce un metodo "get" di eval on rake_remote_task.rb (linea ~ 12). Questo crea un metodo "get" nel contesto di oggetto. Dal momento che le Redis "get" metodo non è definito (si chiama da method_missing) viene eseguito il metodo Vlad. Guardate:
eval "def ottenere \ n puts 'yo' \ n end"
class Foo; end
Foo.new.get
=> yo
Strano non è?
Altri suggerimenti
Forse qualcosa con l'IIS config?