# Una clase que permite adjuntar imágenes a artículos class Post::ImageUploader < CarrierWave::Uploader::Base attr_accessor :site process :strip process resize_to_fit: [1280,1280] version :thumb do process :strip process resize_to_fit: [200,200] end def strip manipulate! do |img| img.strip img end end # Necesitamos pasar el sitio para poder acceder a los archivos locales def initialize(site) super @site = site end # Solo aceptamos imágenes def content_type_whitelist /\Aimage\// end # Devuelve la ubicación del directorio dentro de Jekyll, para eso, # tenemos que tener acceso al sitio que estamos editando def store_dir File.join site.path, 'public', 'images' end # Almacenar en el 'tmp' local def cache_dir File.join Rails.root, 'tmp', 'images' end # XXX los nombres de los archivos siempre son únicos, no chequeamos si # están repetidos. def filename @unique_filename ||= [SecureRandom.uuid, '.', file.extension].join end # Obtener la URL dentro del proyecto de Jekyll def url CGI.unescape(super).remove site.path end end