2015-06-01 2 views
2

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

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

Я пропускаю что-нибудь?

ответ

0

Я запустил пример приложения, и все сделано правильно, файл загружен на 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.