Ho un'applicazione che legge il contenuto di un file e lo indicizza. Li stavo memorizzando nel disco stesso, ma ora sto usando Amazon S3, quindi il seguente metodo non funziona più.Come ottenere il file reale da S3 utilizzando CarrierWave
E 'stato qualcosa di simile:
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.file
restituisce il FileUploader
, e doc.file.file
restituisce la classe CarrierWave::Storage::Fog::File
.
Come posso ottenere il file reale?
Jacob, dal gruppo di google carrierwave risolto con 'open (@ document.file.url)' anche –
@ document.file.read è probabilmente migliore perché funzionerà indipendentemente dalla memoria di file utilizzata, cioè funziona con entrambi i filesystem locali e S3. –
.read non ha funzionato per noi (stiamo usando il cloud in combinazione con carrierwave) – Tibastral