Tôi đang gặp vấn đề với sidekiq. Về cơ bản chúng tôi đang nhận được NameError: uninitialized constant
trên thiết lập sidekiq của chúng tôi đang gây ra một số lượng lớn công việc thất bại.Lỗi Sidekiq Uninitialized Constant
Nhật ký lỗi nói:
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'
Mã này là ở đây:
# 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
Khóa được định nghĩa trong thư viện:
# 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
Và lib/thư mục sẽ tự động được tải với các cấu hình còn lại.
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
Tôi không biết tại sao điều này lại xảy ra. Dường như điều này xảy ra thường xuyên hơn khi chúng tôi triển khai, nhưng dường như điều đó xảy ra thường xuyên nếu không.
Tôi đã theo dõi chuỗi sau: https://github.com/mperham/sidekiq/issues/331 nhưng dường như không cung cấp giải pháp ngoài việc thêm thư mục lib vào autoload_paths.
Tôi đang sử dụng:
đá quý 'đường ray', '3.2.13' đá quý 'sidekiq', '> = 2.7.5'
Bất kỳ trợ giúp sẽ được apreciated rất nhiều.
Tôi đã thêm các đường dẫn và vẫn còn nhận được cùng một lỗi cho tất cả các lớp học của tôi. Tôi có thể thử những thứ khác không? – kakubei
Tôi nhận được lỗi này ngay bây giờ - @kakubei, bạn đã giải quyết vấn đề này chưa? – bodacious
Thật không may là không. Tôi đã phải từ bỏ và chuyển sang những thứ khác, nhưng không bao giờ giải quyết nó, không có lời khuyên nào ở đây làm việc cho tôi: ( – kakubei