rails poner operación notidentifiedbyimagemagickerror imagen game errors active ruby-on-rails paperclip

ruby-on-rails - operación - poner imagen en ruby on rails



Generación de cargas de imágenes de Paperclip con datos falsos-Ruby on Rails Populator/Faker Gems (3)

Para asociar una imagen al azar en su tarea, puede intentar lo siguiente:

user.avatar = File.open(Dir.glob(File.join(Rails.root, ''sampleimages'', ''*'')).sample)

donde sampleimages es un directorio que contiene avatares para asociarse al azar

Actualmente estoy tratando de llenar una base de datos de desarrollo en un proyecto con un montón de datos falsos, para simular cómo se verá y operará con cientos de artículos / usuarios. Busqué diferentes gemas para hacer la tarea, como Factory Girl, pero faltaba documentación y no la conseguí, pero terminé usando las gemas Populator y Faker e hice la siguiente tarea de rake ...

namespace :db do desc "Testing populator" task :populate => :environment do require "populator" require "faker" User.populate 3 do |user| name = Faker::Internet.user_name user.name = name user.cached_slug = name user.email = Faker::Internet.email user.created_at = 4.years.ago..Time.now end end end

Funciona muy bien ... para datos basados ​​en texto. Sin embargo, todos los usuarios tienen un avatar que se puede cargar a través del archivo adjunto Paperclip, y todo el contenido regular tiene archivos adjuntos en miniatura de la misma manera.

Entiendo que la gema de Populator simplemente hace un llenado directo de la base de datos y no necesariamente ejecuta las validaciones de ActiveRecord para hacerlo. Por lo tanto, asumo que Paperclip no puede ejecutar para generar todas las miniaturas diferentes y es necesario (y está cargado en el directorio adecuado). para el avatar si acabo de llenar el campo con una ruta de archivo en la tarea de rastrillo anterior.

¿Hay una manera de poblar imágenes falsas, a través de Populator o de otra manera? ¿O tal vez una forma de apuntar la tarea de rake a un directorio de imágenes de stock en mi disco duro para generar automáticamente miniaturas aleatorias para cada registro? Hicimos una búsqueda en Google por un camino, pero no han dado mucha información sobre el tema.

ACTUALIZAR

La solución final, basada en la línea de pensamiento de pwnfactory ...

namespace :db do desc "Testing populator" task :populate => :environment do require "populator" require "faker" User.populate 3 do |user| name = Faker::Internet.user_name user.name = name user.cached_slug = name user.email = Faker::Internet.email user.created_at = 4.years.ago..Time.now end User.all.each { |user| user.avatar = File.open(Dir.glob(File.join(Rails.root, ''sampleimages'', ''*'')).sample); user.save! } end end

Básicamente, vuelve a bucear y carga avatares del directorio sampleimages en todos los registros.


Una forma de evitar esto es poner un condicional en mis puntos de vista.

Digamos que su modelo es "usuario" y tiene un avatar. Entonces puedes hacer lo siguiente:

<% if product.avatar.exists? %> ... show the attached photo <% else %> .. show a default photo <% end %>

Esto me funciona con Paperclip, y lo uso en mi base de datos de desarrolladores todo el tiempo en lugar de preocuparme por tener toda la imagen adjunta a todos los usuarios.


user.avatar = File.open(Dir[''app/assets/images/*.jpg''].sample)