Rieles: una ruta para servir activos estáticos (como .jpgs, etc?)

He resuelto varios problemas de enrutamiento interesantes: convertir una URL de solicitud en un hash, etc., pero solo por curiosidad, ¿hay alguna manera de decirle al sistema de enrutamiento que desea cualquier cosa que esté bajo un determinado url? ¿La ruta secundaria se sirve 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 ser simplemente ¿Sirvió como un objeto del tipo mime predeterminado? ”

Puede ser interesante

Si coloca el directorio “imágenes” en la carpeta “pública” de la aplicación Rails (por ejemplo: / public / images /), entonces no debería tener ningún problema con los tipos MIME a menos que su servidor web esté configurado incorrectamente.

De acuerdo con sus ejemplos, desea que las imágenes se dirijan en la raíz de la aplicación. No creo que haya una forma, aunque 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, sería el servidor web asegurarse de que las imágenes tuvieran el tipo MIME correcto.

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ía servir imágenes a través del sistema de Rails es si desea algún tipo de control sobre quién puede acceder a ellas. Simplemente ponga todo lo demás en público y acceda a ala: siteurl.whatever / images / *. Jpg

Normalmente uso nginx como frontend y Apache / Passenger como backend. Ngingx envía todas las solicitudes de Rails a Apache, pero maneja todo el contenido estático. Echa un vistazo a los ejemplos en la wiki nginx en inglés . Aquí hay un pequeño extracto de 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; } } 

Entonces, apache escucha en el puerto 81 para manejar las solicitudes de Rails con proxy de nginx y permita que nginx entregue contenido estático. Nginx no solo es supuestamente más rápido que Apache en la entrega de 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 mediante el uso del método de ayuda image_path, que le proporciona la ruta para la imagen que desea mostrar en la vista. Por ejemplo, si desea referir un logo.png en /assets/images/logo.png, puede usar image_path (‘logo.png’).

Advertencia: si su URL de solicitud coincide con un recurso estático WEBrick, mongrel o lo que sea, con gusto lo serviremos. A cualquier costo, no desea que esto esté en producción: si su tráfico es lo suficientemente alto, su aplicación se pondrá de rodillas simplemente porque sus mestizos estarán ocupados con contenido estático.

Así que asegúrese de que su servidor web esté configurado correctamente para todo tipo de contenido estático, como han señalado los comentaristas anteriores.

    Intereting Posts