sidekiq ile ilgili bir sorun yaşıyorum. Temel olarak sidekiq kurulumumuzda NameError: uninitialized constant
alıyoruz, bu da çok sayıda işin başarısız olmasına neden oluyor.Sidekiq hatası Başlatılmamış Sabit
hata günlüğü diyor:
NameError: uninitialized constant GameUser::Lock
/data/@myapp/releases/20130321230952/app/models/game_user.rb:71:in `node_calls_base_get_user'
/data/@myapp/shared/bundled_gems/ruby/1.9.1/gems/sidekiq-2.8.0/lib/sidekiq/processor.rb:45:in `block (3 levels) in process'
/data/@myapp/shared/bundled_gems/ruby/1.9.1/gems/sidekiq-2.8.0/lib/sidekiq/middleware/chain.rb:109:in `call'
kod buradadır:
Kilit Kütüphanede tanımlanır
# app/models/game_user.rb
def self.node_calls_base_get_user(serial, game_name)
if Lock.get("user:#{id}") # Set up lock to prevent multiple users to be created
Lock.delete("user:#{id}")
end
return false
end
:
# lib/lock.rb
class Lock
def self.get(key)
lock = CACHE.add("lock:#{key}", 1, 5) # Let lock autoexpire after 5 seconds
return true
end
end
Ve lib/klasörü otomatik yüklenene Konfigürasyonların geri kalanı ile.
module Myapp
class Application < Rails::Application
...
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
...
end
end
Bunun neden olduğu hakkında hiçbir fikrim yok. Yaygınlaştığımızda daha sık görünse de, aksi takdirde yeterince sık görülür.
Aşağıdaki iletiyi takip ediyorum: https://github.com/mperham/sidekiq/issues/331, ancak lib klasörü autoload_paths'a ekleyerek bir çözüm sunmuyor gibi görünüyor.
kullanıyorum:
mücevher 'raylar', '3.2.13' mücevher 'sidekiq', bir Yardım büyük apreciated olacağını
'> = 2.7.5'.
Bunları yolları eklendi ve hala duyuyorum ettik iyi çalıştı tüm sınıflarım için aynı hatayı alıyorum. Denediğim başka şeyler var mı? – kakubei
Şimdi bu hatayı alıyorum - Kakubei, bunu çözdün mü? – bodacious
Maalesef hayır. Pes etmem ve başka şeylere geçmem gerekti, ama asla çözmedim, buradaki hiçbir ipucu benim için işe yaramadı :( – kakubei