当前位置:  开发笔记 > 编程语言 > 正文

Rails:提供静态资产的路径(如.jpgs等?)

如何解决《Rails:提供静态资产的路径(如.jpgs等?)》经验,为你挑选了3个好方法。

我已经解决了许多有趣的路由问题 - 将请求URL转换为哈希等等,但出于好奇,有没有办法告诉路由系统你想要任何属于某个url的东西字面上要提供的子路径 - 无需通过控制器?

例如,如果我有/home/me/public_html/rails_proj/images/foo.jpg和.../rails_proj/images/other/bar.jpg,我可以插入一条说"图像下的任何内容应该只是作为默认mime类型的对象?"

可能很有趣.



1> Nick Messick..:

如果您将"images"目录放入Rails应用程序的"public"文件夹(例如:/ public/images /),那么除非您的Web服务器配置错误,否则您不应该遇到MIME类型的任何问题.

根据您的示例,您需要应用程序根目录中的图像目录.我不认为Rails有一种方法可以使这些图像可见,但如果你真的想要,你可以使用mod_rewrite使它工作.再一次,由Web服务器决定图像是否具有正确的MIME类型.



2> Allyn..:

从公共目录提供的东西不会通过Rails - 它们只会由您的服务器(可能是apache)处理.您需要通过rails系统提供图像的唯一原因是,您希望对谁可以访问它们进行某种控制.只需将其他所有内容公开并访问ala:siteurl.whatever/images/*.jpg



3> 小智..:

我通常使用nginx作为前端,使用Apache/Passenger作为后端.Ngingx代理所有对Apache的Rails请求,但处理所有静态内容本身.查看英文nginx wiki上的示例.这是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;
    }
}

所以让apache监听端口81来处理由nginx代理的Rails请求,并让nginx传递静态内容.在提供静态内容时,nginx不仅比Apache更快,而且还为每个图像,样式表,javascript或其他任何静态内容卸载了Rails应用程序.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有