2012-05-31 2 views
1

저는 CKEditor를 사용하고 있으며이를 Paperclip과 함께 작동하도록 구성했지만 S3에 파일을 저장한다고 말할 수 없으므로 Paperclip을 사용하여 저장하지만 로컬 파일 시스템에 저장합니다.CKEditor gem with Paperclip and Amazon S3

그래서 Paperclip이 사용할 때마다 명시 적으로 S3를 사용하도록 알리는 방법이 있는지 궁금합니다.

특정 모델에서 Paperclip을 S3로 구성하는 방법을 알고 있습니다. (매우 쉽고 클립 클립 github 위키에서 설명합니다). 나는 Heroku에서 배포 중이므로 로컬 파일 시스템에 쓸 수 없습니다.

+0

어떤 ORM을 사용하고 있습니까? 액티브 레코드? – Christian

+0

예 (죄송합니다.이 질문을 보았습니다). – Agis

답변

5

한 가지 방법은 ckeditor 설치 생성기가 수행중인 작업을 확인하는 것입니다. 예를 들어, ActiveRecord를 ORM으로 사용하는 경우 Paperclip here을 사용하는 모델에 사용되는 템플릿을 살펴보십시오.

생성기는 실제로이 템플릿을 app/models/ckeditor 폴더에 복사합니다. S3를 사용하려면 Paperclip에 필요한대로 편집하고 구성 할 수 있습니다.

는 액티브의 경우, 모델은 다음과 같습니다

/app/models/ckeditor/attachment_file.rb 
/app/models/ckeditor/picture.rb 

는 ckeditor 보석 업데이트 및 업데이트 프로세스가이 모델을 덮어해야 할 경우이 방법이 당신에게 추가 작업을 줄 수 있음을 유의하십시오.

그렇지 않으면 Paperclip 기본 옵션을 사용할 수 있습니다. carrierwave를 들어

Paperclip::Attachment.default_options.merge!(
    YOUR OPTIONS FOR S3 HERE 
) 
-1

꽤 간단합니다. this post을 사용하면 시작할 수 있습니다. 또는 자세한 내용은 this similar question을 참조하십시오.

+1

나는 이것을 이미 알고 있지만 이것은 ActiveRecord 모델과 함께 S3를 사용하기위한 것입니다. 내 경우가 다르다. 기본 모델은 없습니다. 그것은 content 속성을 가진 Post 모델이고, 그 내용에서 사용자는 임의의 그림을 삽입 할 수 있어야하므로 db 테이블 열 또는 다른 것과 관련되지 않습니다. – Agis

1

, 당신은 업 로더를 생성 할 수 있습니다 거기에 당신이 원하는 무엇이든 S3 또는를 구성 할 수 있습니다 : 당신이 종이 클립 초기화 (/config/initializers/paperclip.rb)에서 사용합니다.

class CkeditorAttachmentFileUploader < CarrierWave::Uploader::Base 
    include Ckeditor::Backend::CarrierWave 
    # Choose what kind of storage to use for this uploader: 
    if Rails.env.production? 
    storage :fog 
    else 
    storage :file 
    end 
.... 
end