2016-06-20 14 views
2

S3で静的ファイルを実行しようとしていて、すべて正常に機能します。ファイルは問題なく利用、レンダリング、アップロードされます。しかし、ckeditorを介してブログにプッシュされたものはすべて、アマゾンのホストを指しているのではなく、アプリケーションのURLを指しています。Rails + Carrierwave + Ckeditor + Fog + S3 - ファイルがアマゾンを指していない

この構成

設定/イニシャライザ/ 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) 

とにかく他のアップローダ画像のURLはCKEditorバージョン画像 http://example.com/uploads/https://bucket.s3-eu-west-1.amazonaws.com/uploads/ ... URLです...

任意の提案やヘルプは、私が試したとして感謝し、検索されるだろうインターネットと同様の問題を抱えている人を見つけることができませんでした。公共/非公開の画像に問題があると言われましたが、URLが正しくないため、私の問題ではありません

答えて

0

の問題はいくつかの簡単な手順で解決することができconfig/initializers/carrierwave.rbを作成する

てみてくださいcarrierwaveは古いソースから、古いリンクが壊れていたS3に指すように変更され、テーブルに

mysqldump -hhost -uuser -ppassword database table > table.dump 

をダンプして、SEDまたは一部のテキストエディタでそれを編集することによって固定されなければなりませんでした。それは

nano table.dump + ctrl + w + r 

を検索と置換、その後の検索「/アップロード/とで置き換える」のみあなたは私が何をしたかのフォルダ構造を保存する場合には当然のhttps://bucket.amazonaws.com/uploads/

を行うことができます。

アップロードに関する2番目の問題はまったく問題ではありませんでした。私は最初に既存の画像を調べていたので、それをテストしていません。

P .:これが将来も機能することを確認するだけです。 SRCのリンクが期限切れになる可能性のあるすべての詳細を保存し、

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AddPerm", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::bucket/*" 
     } 
    ] 
} 
0

Railsサーバーを再起動しましたか?

まずあなたが知っている必要があり、そのCKEditorバージョンはデータベースに画像のSRCをハードコードし、その際にCKEditorバージョン:代わりにlib/carrierwave/storage/fog.rbhttps://github.com/carrierwaveuploader/carrierwave/tree/0.11-stable#configuring-carrierwave

+0

にバケットポリシーを編集していなかったので、私はもともと私のファイルは、設定/初期化子にあったが、それはfog.rb.と呼ばれていたコンフィギュレーションを公開してとにかく私はそれを改名し、再開しました(前に何度も)と同じ結果。画像のURLはまだamazon s3ではなくapp hostを指しています – mcblady

関連する問題