Mam problem z sidekiq. Zasadniczo dostaję NameError: uninitialized constant
na naszej konfiguracji sidekiq, co powoduje, że duża liczba zadań kończy się niepowodzeniem.Błąd Sidekiq Niezainicjowana stała
Dziennik błędów mówi:
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 jest tutaj:
# 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
Blokada jest zdefiniowany w bibliotece:
# 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
I lib/folder jest automatycznie ładowany z pozostałymi konfiguracjami.
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
Nie mam pojęcia, dlaczego tak się dzieje. Wydaje się, że zdarza się to częściej, gdy wdrażamy, ale wydaje się, że dzieje się tak często, w przeciwnym razie.
Śledziłem następujący wątek: https://github.com/mperham/sidekiq/issues/331, ale wydaje się, że nie oferuje ono rozwiązania oprócz dodania folderu lib do ścieżek autoload_.
Używam:
gem 'szyny', '3.2.13' gem 'sidekiq', '> = 2.7.5'
Każda pomoc będzie znacznie apreciated.
Dodałem te ścieżki i nadal jestem otrzymuję ten sam błąd dla wszystkich moich zajęć. Jakieś inne rzeczy, które mogłem wypróbować? – kakubei
Otrzymuję teraz ten błąd - @kakubei, rozwiązałeś to? – bodacious
Niestety nie. Musiałem się poddać i przejść do innych rzeczy, ale nigdy go nie rozwiązałem, żadna z porad tutaj dla mnie nie zadziałała :( – kakubei