Devolver imágenes con una aplicación RoR

El otro día se me ocurrió que podría usar un script de rotación de imágenes en mi bitácora personal, Yogur Griego, y me puse a investigar algo al respecto.

<p>Aunque aquí ya hemos <a href="http://www.sobrerailes.com/articles/2005/12/01/rotación-aleatoria-de-imágenes-con-rails">hablado alguna vez</a> sobre cómo rotar imágenes con Rails, la solución de <a href="http://www.hivelogic.com">Dan Benjamin</a> sólo sirve para rotar aplicaciones <strong>dentro</strong> de nuestra aplicación Rails, porque usa funciones de ayuda de la capa de presentación de Rails, es decir, los famosos <em>helpers</em>.</p>


<p>En el caso de mi bitácora, ésta se encuentra albergada en Blogalia, de forma que necesitaba que la aplicación pudiera ser invocada algo así como</p>
<img src="http://mihost/miapprails/controlador/imagen">
<p>que es lo que vendría a ser lo mismo que este <a href="http://www.alistapart.com/articles/randomizer/">script en <span class="caps">PHP</span> que también es obra de Dan Benjamin</a>.</p>


<p>Pues bien, hacer algo parecido en Rails no es demasiado complicado.   Basta con crear nuestra aplicación:</p>
rails rotador
ruby scrip/generate controller imagen
<p>Y, en <tt>app/controllers/imagen_controller.rb</tt>:</p>
class ImagenController < ApplicationController

def index
  send_file 'public/mi_imagen.jpg', :type => 'image/jpeg', :disposition => 'inline'
end
end
<p>Es de notar el parámetro <tt>:disposition</tt>, que determina si el contenido que devolvemos se debe mostrar empotrado en la página que se esté mostrando <del>que es lo que desearíamos</del> o bien se descargue como archivo adjunto.</p>


<p>Obviamente, este ejemplo siempre devuelve la misma imagen (que se guarda en el directorio <tt>/public/</tt> de nuestra aplicación), pero creo que la técnica queda clara.  Sería bastante sencillo leer todos los archivos de un directorio dado y escoger uno de ellos aleatoriamente&#8230; ¿alguien se anima?</p>
blog comments powered by Disqus