NameError неинициализированная константа Worker - (только производство) Но другие рабочие обрабатывают без ошибок - PullRequest
0 голосов
/ 17 февраля 2020

Я получаю неинициализированную постоянную ошибку NameError на производстве. Вызов работнику осуществляется через контроллер с разделением имен (controllers / api / mobile).

Однако у меня есть отдельный работник, у которого нет проблем с производством, и эта ошибка не возникает.

У меня есть два рабочих:

app/workers/ExtractionWorker

app/workers/CopyWasabiObject

У меня есть два контроллера:

app/controllers/photos_controller.rb app/controllers/api/mobile/photos_controller.rb

Контроллер без пространства имен без проблем вызывает ExtractionWorker, выполняет работу и не вызывает эту ошибку.

Когда отправляется запрос API на api/mobile/photos_controller.rb, я получаю следующую ошибку:

NameError: uninitialized constant CopyWasabiObject

Из командной строки на производстве я могу создать экземпляр класс без проблем

Loading production environment (Rails 6.0.2.1)
irb(main):001:0> CopyWasabiObject.new
=> #<CopyWasabiObject:0x0000557aa6e262f8>

app / controllers / photos_controller.rb

if @photo.save
  ExtractionWorker.perform_async(wasabi_path(folder.uuid, photo_params[:name]), @photo.id)
  ...
end

работает как положено

app / controllers / api / mobile / photos_controller.rb

def update
  ...
  CopyWasabiObject.perform_async(@photo.uuid, raw_folder_uuid) if @photo.update!(merged_params)
end

работает на dev, но не работает на производстве

Почему один рабочий работает, а другой не загружается? Я не коснулся автоматической загрузки в config / application.rb. Каждый файл находится в app / *, и я не использую ничего в root, как lib.

То, что я пробовал в последнее время и не работает.
Я попытался расставить названия между работами, чтобы они соответствовали путям. IE: работники / api / mobile Я попытался переместить все работы в приложение / модели / Я изменил вызовы в контроллерах для вызова методов класса, которые затем вызывают работника

Независимо от того, что я пытаюсь сделать, Я просто получаю NameError: неинициализированная константа CopyWasabiObject

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 18 февраля 2020

Я думаю, что-то не так с моей конфигурацией systemd. Я не думаю, что sidekiq перезапускается при развертывании. Я перезапустил sidekiq, и все было хорошо.

...