Задать вопрос
@askhat

Как вызвать Mongoid модель из Sidekiq?

Возможно ли с помощью Mongoid осуществить запись в MongoDB из Sidekiq воркера?
# lib/worker.rb
require 'sidekiq'
require 'model' # lib/model.rb
class AwesomeWorker
  include Sidekiq::Worker
  def perform
    RandomNumberModel.create! { random_number: Random.new.rand(1..100) }
  end
end

При запуске Sidekiq с таким воркером, он возвращает ошибку:
uninitialized constant AwesomeWorker::RandomNumberModel

Что я делаю не так?
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@askhat Автор вопроса
Workaround:
class AwesomeWorker
  def perform model_id
    model = ObjectSpace._id2ref(model_id.to_i)
    model.update_attributes { random_number: Random.new.rand(1..100) }
  end
end
AwesomeWorker.perform_async AwesomeModel.new.object_id

Правильное решение:
class AwesomeWorker
  def perform
    ::AwesomeModel.create!  { random_number: Random.new.rand(1..100) }
  end
end
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Kane
В руби есть договорённость о том как называть файлы и классы к них https://github.com/bbatsov/ruby-style-guide#naming
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы