Я использую 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, если это что-то меняет.) Как мне решить проблему?