1

У меня есть приложение rails4, и я пытаюсь добавить загрузки CDN в S3. По какой-то причине это не работает.рельсы конфигурирование несущей волны с S3 и облачным

Когда я устанавливаю облачный режим в конфигурации по какой-либо причине, он действует только на некоторые из изображений (НЕ ВСЕ), принадлежащих одному и тому же загрузчику, и сверху, что эти изображения сломаны. Изображения, отображаемые на S3, работают должным образом, за исключением того, что они также должны обслуживаться с облачного интерфейса.

Что я пропустил?

изображение, которое отображается (сломалось) через CloudFront:

<%= image_tag current_user.avatar.url(:small_thumb), class: 'navbar-avatar', alt: "#{current_user.first_name}'s_avatar", title: "#{current_user.first_name}'s avatar" %>  

https://xyz.cloudfront.net/images/xyz.cloudfront.net/uploads/profile/avatar/3/small_thumb_3f4ff02.jpg 

Изображение из того же пользователя, что по какой-то причине выводится из S3 не CloudFront (дисплей не сломано)

<%= image_tag post.user.avatar.url(:base_thumb), class: 'post-avatar' %> 

https://eaxmple.s3.amazonaws.com/uploads/profile/avatar/10/base_thumb_john_smith.png 

конфигурации :

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    provider:    'AWS', 
    aws_access_key_id:  ENV['AWS_ACCESS_KEY_ID'], 
    aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']       
    } 
    config.fog_directory = ENV['S3_BUCKET_NAME'] 
    config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } 
    config.asset_host = ENV['CLOUDFRONT_URL'] 
end 

avatar_uploader.rb

if Rails.env.production? 
    storage :fog 
else 
    storage :file 
end 

Gemfile

gem 'carrierwave', '~> 0.10.0' 
gem 'fog', '~> 1.34.0' 
gem 'mini_magick', '~> 4.3.3' 

UPDATE

загрузчиком хранения по умолчанию:

def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
end 

Как я могу изменить это:

https://xyz.cloudfront.net/images/xyz.cloudfront.net/uploads/profile/avatar/3/small_thumb_3f4ff02.jpg 

это:

https://xyz.cloudfront.net/uploads/profile/avatar/3/small_thumb_3f4ff02.jpg 
+0

Что значение 'ENV [ 'CLOUDFRONT_URL'] '? – Codebeef

ответ

1

Похоже, вам может понадобиться добавить протокол к вашей CloudFront URL:

CLOUDFRONT_URL=https://xyz.cloudfront.net 
+0

У меня также есть reem gem с 'ENV ['CLOUDFRONT_URL']', и это нормально обслуживает файлы с облачным экраном, поэтому это должно быть что-то еще. Думаю, это может быть какая-то «туманная» конфигурация. Я видел разные драгоценные камни и установки и не знаю, какой из них хорош. 2 странные вещи - это url (URL-адрес облачного браузера дважды в 'src') и что только некоторые из изображений отображаются облачным. –

+0

Конечно, но ваш CLOUDFRONT_URL содержит протокол? – Codebeef

+0

Для изображений, которые не отображаются, являются ли они общедоступными или частными в S3? – Codebeef

Смежные вопросы