Rails_blob_url ActiveStorage возвращает ссылку, которая показывает страницу с ошибкой 404 при открытии - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть вложение, которое передается через веб-интерфейс через сериализатор следующим образом.

module NameOfSerializer
  class Base < ActiveModel::Serializer
    attributes :id,
               ...
               ...
               ...
               :attachment_url

    def attachment_url
      Rails.application
           .routes.url_helpers
           .rails_blob_url(object.attachment, host: ENV['HOST_URL'])
    end
  end
end

На стадии разработки и подготовки он работает отлично.Я могу скопировать вставить URL, и можно открыть и просмотреть вложение.Но на производстве он показывает страницу с ошибкой 404.

Это то, что я нашел в журнале AWS Elastic Beanstalk.

[2019-02-04T03:50:38.733073 #16644]  INFO -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc] Started GET "/rails/active_storage/blobs/insert_signed_id_here/20190131_214818%20copy%202.jpg" at 2019-02-04 03:50:38 +0000
I, [2019-02-04T03:50:38.736005 #16644]  INFO -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc] Processing by ActiveStorage::BlobsController#show as JPEG
I, [2019-02-04T03:50:38.736056 #16644]  INFO -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc]   Parameters: {"signed_id"=>"insert the signed_id here", "filename"=>"20190131_214818 copy 2"}
D, [2019-02-04T03:50:38.737552 #16644] DEBUG -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc]   [1m[36mActiveStorage::Blob Load (0.9ms)[0m  [1m[34mSELECT  "active_storage_blobs".* FROM "active_storage_blobs" WHERE "active_storage_blobs"."id" = $1 LIMIT $2[0m  [["id", 16], ["LIMIT", 1]]
I, [2019-02-04T03:50:38.737936 #16644]  INFO -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc] Completed 404 Not Found in 2ms (ActiveRecord: 0.9ms)
F, [2019-02-04T03:50:38.740120 #16644] FATAL -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc]   
F, [2019-02-04T03:50:38.740163 #16644] FATAL -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc] ActiveRecord::RecordNotFound (Couldn't find ActiveStorage::Blob with 'id'=16):
F, [2019-02-04T03:50:38.740185 #16644] FATAL -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc]   
F, [2019-02-04T03:50:38.740215 #16644] FATAL -- : [4ca0d491-66cc-4594-9db4-75da533d2fbc] activerecord (5.2.0) lib/active_record/core.rb:177:in `find'

Я был удивлен, увидев, что в журнале написано Blobс идентификатором 16 не найден, но когда я запустил rails c на Elastic Beanstalk, я нашел каплю.Я также проверил другой способ получения файла из S3 в консоли rails, запустив attachment.service_url.Я был в состоянии получить доступ к приложению.Не столкнулся с 404 ошибками.

Есть идеи?Я сталкивался с этой проблемой ранее, и для этой проблемы я перешел на использование service_url, но я хотел бы знать, что приводит к тому, что rails_blob_url не работает в производственной среде.

...