Это странная проблема, которая охватывает многие системы и не знает, где находится корень. У меня есть приложение Rails 4, которое я перенес на Rails 5. Я использую carrierwave
, carrierwave-aws
и dropzone.js
для AWS 3S. Мое старое приложение Legacy работает отлично. Новое приложение работает также, но выдает ошибку в фоновом режиме, когда я загружаю через Dropzone.
С carrierwave-aws
, и контроллер сохраняет загрузку несущей волны (она загружается и сохраняется в БД), если выдает multipart_copy: file.size >= MULTIPART_TRESHOLD
at с undefined method
> = 'для nil: NilClass`
NoMethodError: undefined method `>=' for nil:NilClass
from carrierwave/storage/aws_options.rb:29:in `move_options'
from carrierwave/storage/aws_file.rb:73:in `move_to'
from carrierwave/storage/aws_file.rb:57:in `store'
from carrierwave/storage/aws.rb:18:in `block in store!'
Соответствующий код:
def move_options(file)
{
acl: uploader.aws_acl,
multipart_copy: file.size >= MULTIPART_TRESHOLD
}.merge(aws_attributes).merge(aws_write_options)
end
Я тогда устал FOG, который показывает аналогичную ошибку:
Excon::Error::NotFound
Expected(200) <=> Actual(404 Not Found)
excon.error.response
:body => "<Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Key>uploads/tmp/1571981392-820410573725319-0002-3934/LDT_export.xlsx</Key><RequestId>968BFF30B5502600</RequestId><HostId>yoqwixTfgqxppxOTsC6yKI2NJDY8YvmsuHFqvJkaC3IfzauEvyGBSch/b2pu/gdrTb6taxQSUQc=</HostId></Error>"
:cookies => [
]
:headers => {
"Content-Type" => "application/xml"
"Date" => "Fri, 25 Oct 2019 05:29:55 GMT"
"Server" => "AmazonS3"
"x-amz-delete-marker" => "true"
"x-amz-id-2" => "yoqwixTfgqxppxOTsC6yKI2NJDY8YvmsuHFqvJkaC3IfzauEvyGBSch/b2pu/gdrTb6taxQSUQc="
"x-amz-request-id" => "968BFF30B5502600"
"x-amz-version-id" => "NPV4VoXhQ8OrY2vOSqmjYLrgEqELxjlt"
}
:host => "otproduction.s3.us-west-2.amazonaws.com"
:local_address => "159.203.1.40"
:local_port => 51808
:path => "/locations/hdnw2xf8/uploads/mc4x2klf/LDT_export.xlsx"
:port => 443
:reason_phrase => "Not Found"
:remote_ip => "52.218.217.193"
:status => 404
:status_line => "HTTP/1.1 404 Not Found\r\n"
Файлы загружены, но вызывают эти ошибки. У меня есть загрузчик не из Dropzone (аватар), который не выдает эту ошибку, поэтому что-то не так с Dropzone. Я добавил enctype: 'multipart/form-data'
с подозрением, что это многокомпонентный вопрос, но не повезло.
Есть идеи? Надеясь, что кто-то прочитает это и увидит очевидное решение.