Tengo una URL a una imagen que quiero guardar localmente, para poder usar Paperclip para producir una miniatura para mi aplicación. ¿Cuál es la mejor manera de descargar y guardar la imagen? (Investigué el manejo del archivo ruby pero no encontré nada).
                    
                        ruby-on-rails
                                ruby
                                file-handling
                                
                    
                    
                        Alok Swain
fuente
                
                
            fuente

IO.copy_stream(open('http://example.com/image.png'), 'destination.png')require 'open-uri', solo usé el código debajo de élUna versión aún más corta:
Para mantener el mismo nombre de archivo:
fuente
Si está utilizando PaperClip, la descarga desde una URL ahora se gestiona automáticamente.
Asumiendo que tienes algo como:
En su modelo, simplemente especifique la imagen como una URL, algo como esto (escrito en letra deliberada):
Probablemente quiera poner esto en un método en su modelo. Esto también funcionará bien en el sistema de archivos temporal de Heroku.
Paperclip lo tomará desde allí.
fuente: documentación de clip
fuente
Creo que esta es la forma más clara:
fuente
Echa un vistazo a Net :: HTTP en la biblioteca estándar. La documentación proporciona varios ejemplos sobre cómo descargar documentos usando HTTP.
fuente
Kernel#openpermite no solo el acceso a los archivos, sino también la invocación del proceso mediante el prefijo de un símbolo de tubería (por ejemplo,open("| ls")). Por lo tanto, puede conducir a un grave riesgo de seguridad al usar entradas variables para el argumento deKernel#open.