CarrierWave: NoMethodError (неопределенный метод `body 'для nil: NilClass): - PullRequest
0 голосов
/ 26 марта 2019

Я использую CarrierWave для абстрагирования между жестким диском локальной среды разработки и тестирования и хранилищем AWS S3 промежуточной и производственной сред.Однако возникают проблемы: при попытке загрузить файл, хранящийся на S3,

uploader = Uploader.new
uploader.retrieve_from_store!(file_path)
file = uploader.file.read

CarrierWave вызывает исключение:

NoMethodError (undefined method `body' for nil:NilClass):

Это происходит при вызове readметод выше.Загрузка файла будет успешной, если я попытаюсь загрузить его напрямую с библиотекой AWS:

Aws::S3::Bucket.new(config.s3_bucket_name,
                        client: Aws::S3::Client.new(
                            access_key_id: config.s3_key_id,
                            secret_access_key: Rails.application.secrets.s3_key_secret,
                            region: config.s3_region,
                        )
).object(file_path).get().body

Другие загрузки с помощью CarrierWave будут успешными - они отличаются в том смысле, что они связаны с моделями, тогда как здесь я пытаюсьзагрузить отдельный файл с S3.(Этот файл также не был изначально загружен с CarrierWave, если это что-то меняет.) Как мне решить проблему?

...