require "shrine"
require "shrine/storage/s3"
s3_audio_options = {
access_key_id: Rails.application.secrets.aws_audio_access_key_id,
secret_access_key: Rails.application.secrets.aws_audio_secret_access_key,
region: Rails.application.secrets.aws_audio_region,
bucket: Rails.application.secrets.aws_audio_bucket,
}
s3_image_options = {
access_key_id: Rails.application.secrets.aws_audio_access_key_id,
secret_access_key: Rails.application.secrets.aws_audio_secret_access_key,
region: Rails.application.secrets.aws_audio_region,
bucket: Rails.application.secrets.aws_audio_bucket,
}
Shrine.storages = {
cache: Shrine::Storage::S3.new(prefix: "cache", upload_options: {acl: "public-read"}, **s3_audio_options),
store: Shrine::Storage::S3.new(upload_options: {acl: "public-read"}, **s3_audio_options),
image_cache: Shrine::Storage::S3.new(prefix: "image_cache", upload_options: {acl: "public-read"}, **s3_audio_options),
image_store: Shrine::Storage::S3.new(prefix: "images", upload_options: {acl: "public-read"}, **s3_audio_options)
}
Shrine.plugin :activerecord
Shrine.plugin :direct_upload, allowed_storages: [:cache, :store, :image_cache, :image_store]
Shrine.plugin :restore_cached_data
Shrine.plugin :cached_attachment_data
Shrine.plugin :backgrounding
Shrine::Attacher.promote { |data| PromoteJob.perform_later(data) }
Shrine::Attacher.delete { |data| DeleteJob.perform_later(data) }