[英]Rails + Carrierwave + Ckeditor + Fog + S3 - files are not pointing to amazon
我試圖在S3上運行我的靜態文件,一切都很好。 文件可用,呈現和上傳沒有任何問題。 但是通過ckeditor推送到博客的所有內容都不是指向亞馬遜主機,而是指向應用程序網址。
這是配置
配置/初始化/ fog.rb
CarrierWave.configure do |config|
config.cache_dir = "#{Rails.root}/tmp/uploads"
config.storage = :fog
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: Rails.application.secrets.app_s3_username,
aws_secret_access_key: Rails.application.secrets.app_s3_password,
region: Rails.application.secrets.app_s3_region
}
config.fog_directory = Rails.application.secrets.app_s3_bucket
config.fog_public = false
config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" }
end
車型/ CKEditor的/ picture.rb
class Ckeditor::Picture < Ckeditor::Asset
mount_uploader :data, CkeditorPictureUploader, :mount_on => :data_file_name
def url_content
url(:content)
end
end
上傳/ ckeditor_picture_uploader.rb
# encoding: utf-8
class CkeditorPictureUploader < CarrierWave::Uploader::Base
include Ckeditor::Backend::CarrierWave
# Include RMagick or ImageScience support:
# include CarrierWave::RMagick
include CarrierWave::MiniMagick
# include CarrierWave::ImageScience
# Choose what kind of storage to use for this uploader:
storage :fog
.
.
.
安裝寶石
* carrierwave (0.11.2)
* ckeditor (4.1.6)
* fog (1.37.0)
無論如何,其他上傳者圖片的網址是https://bucket.s3-eu-west-1.amazonaws.com/uploads/ ... ckeditor圖片的網址http://example.com/uploads/ ...
任何建議和幫助將不勝感激,因為我嘗試和搜索互聯網,並沒有找到任何有類似問題的人。 有些人提到了公共/私有圖片的問題,但這不是我的問題,因為URL不正確
您是否嘗試重新啟動Rails服務器?
嘗試創建config/initializers/carrierwave.rb
而不是lib/carrierwave/storage/fog.rb
https://github.com/carrierwaveuploader/carrierwave/tree/0.11-stable#configuring-carrierwave
只需幾個簡單的步驟即可解決問題:
首先你要知道,ckeditor將圖像的src硬編碼到數據庫中,所以當ckeditor carrierwave被修改為從舊源指向s3時,舊鏈接被破壞並且必須通過轉儲表來修復
mysqldump -hhost -uuser -ppassword database table > table.dump
然后通過sed或一些可以查找和替換的文本編輯器進行編輯
nano table.dump + ctrl + w + r
然后搜索“/ uploads /並替換為” https://bucket.amazonaws.com/uploads/
當然只是在你保存文件夾結構的情況下。
上傳的第二個問題根本不是問題。 我剛剛沒有測試它,因為我先查看現有圖片。
PS:只是為了確保即使將來也可以使用。 我將配置公開,因此src鏈接未存儲可能過期的所有詳細信息並將桶策略編輯到
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket/*"
}
]
}
嘗試重置您的數據庫。 或者將表格放在你的ckeditor照片網址存儲之前,然后將它們指向霧/ aws。 為我工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.