ActiveStorage периодически возвращает «Не удалось найти ActiveStorage :: Blob с« id »» - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть простая спецификация контроллера, которая должна проверять обработку нового материала в очереди при создании элемента.

materials_controller_spec.rb (#create):

  it 'queues the processing of the material' do
    post :create, params: { material: valid_attributes }, session: valid_session

    expect(ProcessMaterialJob).to(
      have_been_enqueued.with(material_id: Material.last.id, video_filepath: Material.last.video_filepath)
    )
  end

При автономной работе это нормально, но когда я запускаю весь пакет с rspec ., я получаю следующую ошибку:

 ActiveJob::DeserializationError:
   Error while trying to deserialize arguments: Couldn't find ActiveStorage::Blob with 'id'=418
 # ./spec/controllers/materials_controller_spec.rb:81:in `block (4 levels) in <top (required)>'
 # ------------------
 # --- Caused by: ---
 # ActiveRecord::RecordNotFound:
 #   Couldn't find ActiveStorage::Blob with 'id'=418
 #   ./spec/controllers/materials_controller_spec.rb:81:in `block (4 levels) in <top (required)>'

Было несколько моментов, в которых я не был убежден,вложение полностью загружено до отображения следующей страницы.Я обеспокоен тем, что это может означать проблему с загрузкой файлов.Я следовал руководству по прямой загрузке , но все еще не вижу индикатора прогресса при загрузке видеофайлов, которые достаточно велики.

Мои вопросы:

  1. Что вызывает странную проблему Couldn't find ActiveStorage::Blob with 'id'=418?
  2. Как я могу отладить загрузку файла, если в этом проблема?

Заранее спасибо!

1 Ответ

0 голосов
/ 30 декабря 2018

Я ранее добавил ActiveJob::Base.queue_adapter = :test к своему rails_helper.rb, чтобы оно работало.Однако добавление этой строки в конкретный тест, похоже, решило проблему.

it 'queues the processing of the material' do
  post :create, params: { material: valid_attributes }, session: valid_session

  expect(ProcessMaterialJob).to(
    have_been_enqueued.with(material_id: Material.last.id, video_filepath: Material.last.video_filepath)
  )
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...