Rails Active Storage: прямая загрузка из модели - PullRequest
0 голосов
/ 03 октября 2019

Я создаю карту сайта для своего сайта, и мне нужно загрузить ее на S3 из-за временной файловой системы Heroku.

Я уже настроил Active Storage с Amazon S3, но я не хочу создаватьМодель объекта только для одной загрузки. Есть ли способ просто:

sitemap.rb

  1. Загрузить созданный файл "public / sitemaps / sitemap.xml.gz" на S3 с активнымХранилище
  2. Получение URL

1 Ответ

1 голос
/ 03 октября 2019

Неправильный инструмент.

Active Storage облегчает загрузку файлов в облачную службу хранения, такую ​​как Amazon S3, Google Cloud Storage или Microsoft Azure Storage, и присоединение этих файлов к объектам Active Record.

ActiveStorage построен на присоединении файлов к моделям. Попытка использовать его без модели будет очень болезненной, так как вы работаете против всего дизайна ActiveStorage.

Если вы просто хотите загрузить файл, созданный на сервере, используйте aws-sdk-вместо него ruby ​​gem .

require 'aws-sdk-s3'

s3 = Aws::S3::Resource.new(region:'us-west-2')
obj = s3.bucket('bucket-name').object('key')
obj.upload_file('/path/to/source/file', { acl: 'public-read' })
# Returns Public URL to the file
obj.public_url

См. Загрузка объекта с использованием AWS SDK для Ruby .

...