2017-03-09 12 views
0

私のレールプロジェクトでckeditor WYSIWYG text editorを使用しています。特に:プロダクションモードで画像アップロードを設定する際に問題があります。Rails:ckeditor gemがnginxとパッセンジャーの生産モードで動作しない

これは開発モードではうまく機能し、プーマを使用している間はプロダクションモードでもローカルで動作します。をクリックして写真をアップロードし、Browse Serverボタンをクリックします。それはすぐに私がそれらを期待する写真を探します:/assets/ckeditor_assets/picturesの中に。

問題は、nginxを使用して運用モードで動作するようになっています。生産モードでnginxを使用すると、エラーメッセージ404 Not Foundが返されます。私は私のサーバーのログを見て、ここではそれが言うことではありません:

"は/ var/www /のMYAPP/CKEditorバージョン/写真は" 失敗した(2:そのようなファイルまたはディレクトリ)

ので、いくつかのために私のパブリックディレクトリ内にckeditorというディレクトリがあります(私のパブリックディレクトリへのシンボリックリンクなので)。なぜ私のアプリpublic/assets/ckeditor_assetsディレクトリ内で探している必要があるときに、なぜckeditorがckeditorディレクトリを探しているのかわかりません。

私のパブリックディレクトリ内にckeditorディレクトリを作成し、その中にpicturesディレクトリを置くことでこれを解決しようとしました。しかし、私がそれをしたとき、私は403 Forbiddenエラーを受けました。

私はconfig/initializers/ckeditor.rbファイル内でこの行があることを通知しました:だからそれを私が絵を行くとフェッチするCKEditorバージョンを望んでいたが、残念ながらそれはしなかった私はハードコード打撃を与えるために

# Customize ckeditor assets path 
# By default: nil 
#config.asset_path = "http://www.example.com/assets/ckeditor/" 

いずれかの作業。

私に教えてください。ありがとう!私は先に行くと、すべての手がかりを提供した場合の私のckeditor::pictureモデルファイルが表示されます:私の仲間はそれを考え出した

class Ckeditor::Picture < Ckeditor::Asset 
    has_attached_file :data, 
    :url => "/assets/ckeditor_assets/pictures/:id/:style_:basename.:extension", 
    :path => ":rails_root/public/assets/ckeditor_assets/pictures/:id/:style_:basename.:extension", 
    :styles => { :content => '800>', :thumb => '118x100#' } 

    validates_attachment_presence :data 
    validates_attachment_size :data, :less_than => 2.megabytes 
    validates_attachment_content_type :data, :content_type => /\Aimage/ 

    def url_content 
    url(:content) 
    end 
end 

答えて

0

を。それは、単にnginx.confファイルで必要な設定であることが判明しました。私はnginxと乗客を使用しています。

MYAPP/ckeditor/picturesではなく、ckeditor/picturesにck_editorから要求が送信されます。基本的には、あなたのアプリの相対パス(乗客経由)は無視されます。私はそうのような場所ブロックの正規表現を更新:

# nginx.conf 
... 
location ~ ^/(RELATIVE_PATH_FOR_APP|ckeditor/pictures)(/.*|$) { 
    ... 
} 

代替は1つがthe ckeditor config.js fileで見つかった構成のいくつかをオーバーライドすることによって、ロケーションブロック内ckeditor/picturesのための正規表現を見合わせることができるかもしれないということです。このようにして、サーバーレベルではなくアプリケーションレベルでck_editorルーティングを指定しています。

関連する問題