Я запустил пример приложения, и все сделано правильно, файл загружен на S3. Вы можете видеть это при просмотре вашего ведра s3. Должна быть папка /store
с файлом внутри, который выглядит примерно так: 8d005532259e4abc0.....
Он будет соответствовать идентификатору, сохраненному в вашей базе данных. В вашем случае идентификатор хранится как profile_image_id в вашей модели пользователя.
Возможно, вы сбиваете с толку, что результат attachment_url
возвращает <img src="/attachments/store/fill/300/300/8d005532259e4abc0...../profile_image.jpg" alt="Profile image">
, что кажется, что он по-прежнему загружается на локальный хост.
Что происходит, так это то, что refile загружает файл с amazon s3, изменяет его до 300x300 на лету и отправляет его в браузер. Однако это не следует делать каждый раз, когда страница загружается, так как она будет тратить много вычислительной мощности. Здесь требуется CDN, а refile предназначен для его использования. Таким образом обработанное изображение получает кеширование, и все происходит намного быстрее.
в файле конфигурации refile.rb
:
Refile.cdn_host = "https://your-dist-url.cloudfront.net"
или в моем случае я ограничен его производства:
if Rails.env.production?
Refile.cdn_host = "https://your-dist-url.cloudfront.net"
end
Обратите внимание, что .cdn_host следует .host при использовании версии ниже 0.6 .0
Теперь это должно вернуть что-то l ike <img src="https://your-dist-url.cloudfrond.net/attachments/store/fill/300/300/8d005532259e4abc0...../profile_image.jpg" alt="Profile image">
Подробнее об этом вы можете узнать у официального documentation.