Невозможно изменить префикс Shrine Amazon S3 в приложении Rails

#ruby-on-rails #ruby #amazon-web-services #amazon-s3 #ruby-on-rails-5

#ruby-на-рельсах #рубиновый #amazon-веб-сервисы #amazon-s3 #ruby-on-rails-5

Вопрос:

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

 <Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>store/cccd4928ef62740b851f7c278a3907ef.png</Key>
....
</Error>
 

Это моя текущая настройка в config/initializers/shrine.rb:

 require "shrine/storage/s3"
 
s3_options = {
    access_key_id: Rails.application.secrets.access_key_id,
    secret_access_key: Rails.application.secrets.secret_access_key,
    region: Rails.application.secrets.aws_region,  
    bucket: Rails.application.secrets.aws_bucket,  
}

if Rails.env.development?
    prefix = "dev"
else
    prefix = "prod"
end 

Shrine.storages = {
  cache: Shrine::Storage::S3.new(prefix: prefix, **s3_options), #default prefix is "cache"
  store: Shrine::Storage::S3.new(prefix: prefix, **s3_options),   #default prefix is "store"
}

Shrine.plugin :activerecord
Shrine.plugin :upload_endpoint
Shrine.plugin :restore_cached_data
 

Ответ №1:

Решил это.

В основном в модели, где я ссылаюсь на класс Shrine ImageUploader, мне нужен user include ImageUploader::Attachment(:image) , а include ImageUploader[:image] не потому, что я использую Shrine.plugin :activerecord