5 votes

sidekiq+whenever+unicorn constante non initialisée ClassWorker production env.

J'utilise Rails 4, sidekiq 2.13.1, whenever, cron script exécuté toutes les 2 minutes. Aucune erreur lors de la première exécution mais toutes les suivantes obtiennent des erreurs. J'ai eu cette erreur seulement dans l'environnement de production. Mon travailleur se trouve dans app/workers. Je l'ai inclus par la chaîne suivante dans application.rb :

config.eager_load_paths += %W(#{config.root}/app/workers) 

Erreur :

2013-08-15T12:34:05Z 31102 TID-oh1d0 WARN: {"retry"=>true, "queue"=>"default", "class"=>"AllGlobalWorker", "args"=>[], "jid"=>"c8f5827813277c890b4a621e", "enqueued_at"=>1376570045.3903732}
2013-08-15T12:34:05Z 31102 TID-oh1d0 WARN: uninitialized constant AllGlobalWorker
2013-08-15T12:34:05Z 31102 TID-oh1d0 /home/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/inflector/methods.rb:226:in `const_get'

Des idées à ce sujet ? Merci.

2voto

BuDen Points 496

Je l'ai résolu en ajoutant les lignes suivantes au fichier de configuration production.rb et en déplaçant mes travailleurs et les classes de dépendance dans le dossier lib. Voici la configuration :

config.eager_load = true
config.eager_load_paths += %W(#{config.root}/lib)
config.autoload_paths += %W(#{config.root}/lib)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X