I have CarrierWave working fine through the typical ORM setup and upload via form. I would like to figure out how to use CarrierWave outside of the form submission context.
in the controller after user sign up (assuming your user image field is called simply 'image')
gravatar_url = "http://www.gravatar.com/avatar/#{Digest::MD5.new.update(current_user.email)}?s=512&d=identicon"
@user.remote_image_url = gravatar_url
@user.save
i think this is the best way according to carrierwave docs and some searching around.
enjoy!
I've had lots of trouble trying to figure out how to get store!
to work with local file paths. It turns out that store!
actually takes a file as a parameter, not a string.
For the URL, you'll need to require 'open-uri'
first, then open the file/url. Something like this should work:
require 'open-uri'
gravatar_url = "http://www.gravatar.com/avatar/#{Digest::MD5.new.update(current_user.email)}?s=512&d=identicon"
tempfile = open(gravatar_url)
uploader = ImageUploader.new
uploader.store! tempfile
The same will work with a file path, but you don't have to require open-uri
in that case.
Actually you can do this using the built in remote_{attribute}_url
property if you are using the active record/model helpers (see the CarrierWave railscast for the details). However, I dug around in the source code a bit to see how this actually works and it appears that even if you are not you should be able to use the following:
uploader = ImageUploader.new
uploader.download! some_remote_url
uploader.store!
Give it a try.