cloudinary / cloudinary/cloudinary_gem

Invalidate cache in CarrierWave uploader?

Offen
#314 4 Kommentare 2 Reaktionen 1 zugewiesene Person Beansprucht von @const-cloudinary Auf GitHub ansehen
bug
Vorherrschende Sprache
Ruby
Sterne
420
Forks
285
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Hi, I having strange issue that I found many people struggle with through out issues, but I havent found how to make it using carrierwave. My problem is that if I have cloudinary carrierwave uploader on field in model and currently that field is nil and I upload new image using just simple_form form submit - it appears in cloudinary dashboard and as actual field in model so I can see uploaded image on site. Issue occurs when I want to update existing image on model - after `model.update_attributes` call with say `logo` parameter from form submitted, I see new image occurs in dashboard and old one is gone, however, my model still having old image in its field, so that I see only old image on site.

For example, my model `Comany` is Neo4j one, and in it is only that:
```ruby
class Company
...
property :logo
mount_uploader :logo, CompanyLogoUploader
...
end
```
`CompanyLogoUploader`:
```ruby
class CompanyLogoUploader < CarrierWave::Uploader::Base
include Cloudinary::CarrierWave

process :convert => 'jpg'

if Rails.env.development?
process :tags => ['env.development']
end

version :large do
process :resize_to_fit => [500, 500, :north]
end

version :medium do
process :resize_to_fit => [140, 140, :north]
end

version :small do
process :resize_to_fit => [80, 80, :north]
end

version :tiny do
process :resize_to_fill => [20, 20, :north]
end
end
```

Now, if I have company model without logo and upload new one, all is great and here what I see as logo:

```ruby
[2] pry(main)> Company.find('f0cfdf56-0f72-4184-affb-b37ee5fe097e').logo
=> #,
@version=nil>,
@model=
#,
@mounted_as=:logo,
@original_filename="spikbsjvpx9tkgi78c3w.jpg",
@public_id="spikbsjvpx9tkgi78c3w",
@stored_public_id="spikbsjvpx9tkgi78c3w",
@stored_version=nil>

[3] pry(main)> Company.find('f0cfdf56-0f72-4184-affb-b37ee5fe097e').logo.url(:medium)
=> "https://res3.cloudinary.com/davsupw1h/image/upload/c_fit,h_140,w_140/spikbsjvpx9tkgi78c3w.jpg"
```
It appears in dashboard with url: "https://res.cloudinary.com/davsupw1h/image/upload/v1532952671/spikbsjvpx9tkgi78c3w.jpg"

Now, If I'll change this image to smth else, here's updated debug:
```ruby
[4] pry(main)> Company.find('f0cfdf56-0f72-4184-affb-b37ee5fe097e').logo
=> #,
@version=nil>,
@model=
#,
@mounted_as=:logo,
@original_filename="spikbsjvpx9tkgi78c3w.jpg",
@public_id="spikbsjvpx9tkgi78c3w",
@stored_public_id="spikbsjvpx9tkgi78c3w",
@stored_version=nil>

[5] pry(main)> Company.find('f0cfdf56-0f72-4184-affb-b37ee5fe097e').logo.url(:medium)
=> "https://res-3.cloudinary.com/davsupw1h/image/upload/c_fit,h_140,w_140/spikbsjvpx9tkgi78c3w.jpg"
```

Whereas new image that got updated in dashboard has url "https://res.cloudinary.com/davsupw1h/image/upload/v1532953062/spikbsjvpx9tkgi78c3w.jpg" - version is changed.

So my question is next - should I pass version somehow in image uploader, and how/where?
If yes then why does carrierwave integration by default does not using version and rely on caching? Can I turn it off somehow, in uploader, in cloudinary initializer? Thanks.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.