Пересылка на S3 по-прежнему возвращает загрузку на локальный хост

Я следовал этому уроку при refile / refile и пытался использовать `refile-s3 для загрузки моих фотографий на S3. Тем не менее, он все еще загружается на мой локальный хост.. Интересно, почему?

Код в Github: https://github.com/chrisyeung1121/refile-example

Я что-то пропустил?

1 ответ

Я запустил пример приложения и все сделано правильно, файл загружен на S3. Вы можете видеть это при просмотре вашего s3 ведра должно быть /store папка с файлом внутри вот так выглядит: 8d005532259e4abc0..... Это будет соответствовать идентификатору, сохраненному в вашей базе данных. В вашем случае идентификатор хранится как profile_image_id в вашей модели пользователя.

Это может сбивать с толку, что результат attachment_url возвращается <img src="/attachments/store/fill/300/300/8d005532259e4abc0...../profile_image.jpg" alt="Profile image"> заставляя это казаться, что это все еще загружено к localhost.

Происходит то, что 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

Теперь это должно вернуть что-то вроде <img src="https://your-dist-url.cloudfrond.net/attachments/store/fill/300/300/8d005532259e4abc0...../profile_image.jpg" alt="Profile image">

Подробнее об этом вы можете прочитать в официальной документации.

Другие вопросы по тегам