2012-08-11 7 views
5

ファイルの内容を読み込んでインデックスを作成するアプリケーションがあります。私はそれらをディスクそのものに保管していましたが、今はAmazon S3を使用していますので、以下の方法はもう機能しません。CarrierWaveを使用してS3から実際のファイルを取得する方法

それはこのようなものだった:

def perform(docId) 
    @document = Document.find(docId) 
    if @document.file? 

     #You should't create a new version 
     @document.versionless do |doc| 
     @document.file_content = Cloudoc::Extractor.new.extract(@document.file.file) 
     @document.save 
     end 

    end 
    end 

@document.fileFileUploaderを返し、doc.file.fileCarrierWave::Storage::Fog::Fileクラスを返します。

実際のファイルはどのように入手できますか?

答えて

9

@document.file.readを呼び出すと、CarrierwaveのS3からファイルの内容が取得されます。

+1

Jacob、 'open(@ document.file.url)'で解決されたcarrierwave googleグループtoo –

+1

@ document.file.readは、使用されているファイルストレージに関係なく動作するため、おそらく良いでしょう。つまり、両方のローカルファイルシステムS3。 –

+0

.readは私たちのためには機能しませんでした(私たちは曇り波を搬送波と組み合わせて使用​​しています) – Tibastral

関連する問題