Я пытаюсь загрузить фотографию на S3 с помощью Rails Active Storage.
Я могу прикрепить фотографию:
user.photo.attach(io: File.open('spec/images/filename.png'), filename: 'filename.png')
Я могу сохранить пользователя и Я могу получить URL-адрес службы фотографий и увидеть ее в браузере и в своем хранилище:
user.photo.service_url
Однако, если я перезапущу консоль и попытаюсь получить URL-адрес службы, я получить следующую ошибку:
Module::DelegationError (service_url delegated to attachment, but attachment is nil)
Вот мои настройки корзины:
storage.yml:
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: us-east-2
bucket: <%= Rails.application.credentials.dig(:aws, :bucket) %>
application.rb:
config.active_storage.service = :amazon
user.rb:
has_one_attached :photo
У меня также возникают проблемы с использованием public: true
в файле storage.yml.
Я получаю следующую ошибку при попытке установить конфигурацию:
ArgumentError (Cannot load `Rails.config.active_storage.service`:)
invalid configuration option `:public'
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: us-east-2
bucket: <%= Rails.application.credentials.dig(:aws, :bucket) %>
public: true