Ich habe eine Rails4 App und ich versuche, CDN S3-Uploads hinzuzufügen. Aus irgendeinem Grund funktioniert es nicht.Schienen konfigurieren Carrierwave mit S3 und Cloudfront
Wenn ich die Cloudfront in der Konfiguration aus irgendeinem Grund eingestellt habe, hat sie nur Auswirkungen auf einige der Bilder (NICHT ALLE), die zum selben Uploader gehören, und darüber hinaus sind diese Bilder kaputt. Bilder, die von S3 angezeigt werden, funktionieren ordnungsgemäß, außer sie sollten auch von Cloudfront aus bedient werden.
Was habe ich vermisst?
Bild, das (gebrochen) über Cloudfront angezeigt wird:
<%= 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
Bild vom gleichen Uploader, die aus irgendeinem Grund von S3 nicht Cloudfront angezeigt (Display ist nicht gebrochen)
<%= 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
Config :
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
Uploader Standard-Speicher:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
Wie kann ich das ändern:
https://xyz.cloudfront.net/images/xyz.cloudfront.net/uploads/profile/avatar/3/small_thumb_3f4ff02.jpg
dazu:
https://xyz.cloudfront.net/uploads/profile/avatar/3/small_thumb_3f4ff02.jpg
Was ist der Wert von 'ENV [ 'CLOUDFRONT_URL']'? – Codebeef