ruby on rails - rails - Rieles: una ruta para servir activos estáticos(como.jpgs, etc.)
routes rails examples (5)
Advertencia: si la URL de su solicitud coincide con un recurso estático, WEBrick, mongrel o lo que sea, lo servirá felizmente. A toda costa, no querrás que esté en producción: si tu tráfico es lo suficientemente alto, tu aplicación se pondrá de rodillas simplemente porque sus amigos estarán ocupados sirviendo contenido estático.
Así que asegúrese de que su servidor web esté configurado correctamente para todo tipo de contenido estático como lo han señalado los comentaristas anteriores.
He trabajado en mi camino a través de una serie de interesantes problemas de enrutamiento, convirtiendo una URL de solicitud en un hash, etc., pero solo por curiosidad, ¿hay alguna forma de decirle al sistema de enrutamiento que quieres algo que esté bajo una determinada URL? subpath a ser servido literalmente - sin pasar por un controlador?
Por ejemplo, si tengo /home/me/public_html/rails_proj/images/foo.jpg, y ... / rails_proj / images / other / bar.jpg, ¿puedo insertar una ruta que diga "cualquier cosa debajo de las imágenes debería simplemente ser servido como un objeto del tipo de mime predeterminado? "
Puede ser interesante.
Las cosas que se sirven fuera del directorio público no pasarán por Rails, solo serán manejadas por su servidor (probablemente apache). La única razón por la que necesitarías servir imágenes a través del sistema de rieles es si querías algún tipo de control sobre quién podría acceder a ellos. Simplemente ponga todo lo demás en público y acceda a ala: siteurl.whatever / images / *. Jpg
Si coloca el directorio "images" en la carpeta "public" de la aplicación Rails (por ejemplo: / public / images /), no debería tener problemas con los tipos MIME a menos que su servidor web esté configurado incorrectamente.
De acuerdo con sus ejemplos, usted quiere el directorio de imágenes en la raíz de la aplicación. No creo que exista una manera de Rails de hacer que esas imágenes sean visibles, pero si realmente quisieras, podrías usar mod_rewrite para que funcione. Una vez más, correspondería al servidor web asegurarse de que las imágenes tuvieran el tipo MIME correcto.
Normalmente uso nginx como frontend y Apache / Passenger como back-end. Ngingx procesa todas las solicitudes de Rails a Apache pero maneja todo el contenido estático. Vea los ejemplos en la wiki de nginx en inglés . Aquí hay un pequeño extracto para la configuración de nginx:
server {
listen 80;
server_name www.domain.com;
location ~* /.(jpg|jpeg|gif|png|ico|css|bmp|js)$ {
root /path/to/static/assets/dir;
}
location / {
proxy_pass http://127.0.0.1:81;
}
}
Así que haga que apache escuche en el puerto 81 para manejar las solicitudes de Rails proxys por nginx y deje que nginx entregue contenido estático. No solo se supone que nginx es más rápido que Apache para entregar contenido estático, sino que también descarga su aplicación Rails para cada imagen, hoja de estilo, javascript o cualquier otro contenido estático.
Creo que la forma más sencilla de resolver este problema es usar el método image_path helper, que le proporciona la ruta de acceso de la imagen que desea visualizar en la vista. Por ejemplo, si quiere referir un logo.png en /assets/images/logo.png, puede usar image_path (''logo.png'').