#app/uploaders/logo_image_uploader.rb class LogoImageUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end # process resize_to_fit: [800, 800] # process :crop_image version :large do process :crop_image process resize_to_fit: [800, 800] # resize_to_limit(600, 600) end version :medium do process :crop_image # process resize_to_fit: [600, 600] resize_to_limit(600, 600) end version :thumb do process :crop_image resize_to_fill(100, 100) end version :tiny, from_version: :thumb do process resize_to_fill: [20, 20] end def crop_image resize_to_limit(600, 600) unless $logo_crop_x.blank? manipulate! do |image| x = $logo_crop_x.to_f y = $logo_crop_y.to_f w = $logo_crop_w.to_f h = $logo_crop_h.to_f #img.crop "#{w}x#{h}+#{x}+#{y}" image.crop([[w, h].join('x'), [x, y].join('+')].join('+')) end end end def extension_white_list %w(jpg jpeg gif png) end def filename "#{secure_token(10)}.#{file.extension}" if original_filename.present? end protected def secure_token(length = 16) return SecureRandom.hex(length / 2) end end