Open kris opened 1 year ago
@kris I just tested this and I'm unable to replicate it, I'm basically using the photo_album
sample from https://github.com/cloudinary/cloudinary_gem/tree/master/samples and I just modified image_uploader
to
class ImageUploader < CarrierWave::Uploader::Base
include Sprockets::Rails::Helper
include Cloudinary::CarrierWave
process :tags => ["photo_album_sample"]
process :convert => "jpg"
cloudinary_transformation :image_metadata => true, :colors => true
version :thumbnail do
eager
resize_to_fit(150, 150)
cloudinary_transformation :quality => 80
end
end
And photo
model to
class Photo < ActiveRecord::Base
belongs_to :album
mount_uploader :image, ImageUploader
validates_presence_of :title, :image
after_save :extract_colors
def extract_colors
if self.image.present? && self.image.metadata.present?
exif = self.image.metadata["image_metadata"]
colors = self.image.metadata["colors"]
end
end
end
Can you try like that?
@tommyg-cld Sorry for the late reply. It still doesn't work. Try this:
binding.pry
in #extract_colors
image.metadata
-- for me it's nil
object.image.metadata
and you will see it's set. The problem is that metadata
appears to be nil
until after the after_save
is called.@kris sorry for the delay. So yes after_save
needs to be called so that the object is created first. Once the object is created, you can then access image.metadata.
Can you explain what exactly you are trying to achieve?
@tommyg-cld When an image is uploaded, I wanted to have a callback that is triggered on the model to cache the extracted colors from Cloudinary. I was hoping to do this within a callback, but my current solution is to have an operation/service that saves the object, then updates the objects color cache via the mounted image, then call again. Less than ideal compared to an after_save
, but I guess this is as good as I'll get.
@kris can you just not use after_save then?
@tommyg-cld metadata is nil for me in after_save
. I'll create a repo over the next few days to demonstrate.
@kris just following up to check if this is still an issue?
Describe the bug in a sentence or two.
I'm trying to extract colors from an uploaded image, following the docs on utilizing
cloudinary_transformation
and anafter_save
on the model. Unfortunately,metadata
seems to always benil
. Once theafter_save
callback has finished, thensource.metadata
is populated. This seems like a misplaced lifecycle callback or something.Issue Type (Can be multiple)
Steps to reproduce
Environment and Libraries (fill in the version numbers)