2014-12-24 3 views
2

Поскольку мы больше не будем использовать cloudinary, как я могу перенести все наши облачные изображения на carrierwave?RoR Миграция от облачного до несущей волны

Для миграции tutorial- пасмурно, но не назад. Может ли кто-нибудь помочь, пожалуйста?

Спасибо!

+0

Вы нашли решение? – ExiRe

+0

@ExiRe, да, см. Мой ответ. –

ответ

2

я закончил с чем-то вроде этого:

1) Сгенерированного изображения загрузчик

# encoding: utf-8 
class GiftImageUploader < CarrierWave::Uploader::Base 
storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

2) Created рейки задача lib/tasks/pictures.rake

namespace :pictures do 
    desc 'Download images of gifts from Cloudinary to the localhost' 
    task :download => :environment do 

    Picture.all.each do |pic| 
     if pic.image.to_s.include? 'cloudinary' 
     uploader = GiftImageUploader.new(pic) 
     uri = pic.image.to_s 
     url = 'http://res.cloudinary.com/<domain_name>/image/upload/' + pic.image.filename 
     puts url 
     begin 
      uploader.download! url 
      uploader.store! 
      puts pic.id.to_s + ' ' + (pic.title != nil ? pic.title : '') + ' 100% download' 
      pic.gift_image = uploader 
      pic.save 
      puts 'SAVED' 
     rescue 
      puts 'Error with ' + pic.id.to_s + ' ' + (pic.title != nil ? pic.title : '') + '!' 
     end 
     end 
    end 
    puts 'Done all!' 
    end 
end 

И это было успешным для меня.

Смежные вопросы