cloudinary / cloudinary/cloudinary_gem

uploader.read returns an empty string

Aperta
#175 0 commenti 0 reazioni 1 assegnatario Assegnata a @d-mendoza Vedi su GitHub
question
Lingua principale
Ruby
Stelle
420
Fork
285
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I use cloudinary 1.1.0 with carrierwave 0.10.0 in a rails 4.2.4 app to store PDFs.

I get the following bug

``` ruby
record.pdf.read # => ""
```

I digged a bit into the code base and realised that the Uploader's identifier was not the same as the Cloudinary::CarrierWave::CloudinaryFile's identifier

``` ruby
record.pdf.identifier # => v1444643650/foo.pdf
record.pdf.file.identifier # => image/upload/v1444643650/foo.pdf
```

Internally, pdf.read calls pdf.file.read which is defined as

``` ruby
def read(options={})
parameters={:type=>self.storage_type, :resource_type=>self.resource_type}.merge(options)
Cloudinary::Downloader.download(self.identifier, parameters)
end
```

Cloudinary::Downloader.download then gives Cloudinary::Utils.cloudinary_url the passed identifier to generate the URL to read data from.

But the generated URL is wrong when the identifier is pdf.file.identifer. I tried with the uploader's identifier and it worked.

``` ruby
Cloudinary::Utils.cloudinary_url pdf.identifier
# => http://res.cloudinary.com/cloud_name/image/upload/v1444643650/foo.pdf

Cloudinary::Utils.cloudinary_url pdf.file.identifier
# => http://res.cloudinary.com/cloud_name/image/upload/v1/image/upload/v1444643650/foo.pdf
```

Hope this helps to fix the bug

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.