公共文件夹中的Rails 4图像未在Apache开发中加载

时间:2015-03-04 10:28:22

标签: apache ruby-on-rails-4

我是铁杆新手。我正在研究社交网络的示例应用程序。我已设法手动上传用户的个人资料图片(通过将上传到/ tmp / image的图像复制到公共文件夹 - public / images / tmp / image)并将路径保存为db为avatar_url。

在个人资料视图中,我使用了

<%= image_tag(@userinfo.avatar_url, :alt=>"Avatar image")%>

并在rails服务器上运行时获取图片。

但之后我通过设置 RailsEnv开发,在开发环境中使用apache在apache中部署了应用程序。之后图像没有加载。我试图去 myip:80 / public / images / tmp / image ,它会提供路由错误

在网上搜索后,我发现在 production.rb 中添加config.serve_static_assets = true将解决生产中的问题。但对我没用,因为它还声明默认情况下静态文件将在开发中提供。为了再次确认问题,我启动了rails服务器并打开了localhost:3000 / profile,图像就在那里而没有在myip中获取图像:80 / profile。

所以我需要添加任何其他配置。或者我不应该这样做。

2 个答案:

答案 0 :(得分:3)

最后,我得到了解决问题的方法。只是在这里分享。

问题实际上是因为许可问题。该图片将在表单提交的根temp目录中创建。然后我将temp文件夹中的图像复制到公用文件夹。因此它只具有读权限。部署之后,图像返回403禁止错误。

我用过,

FileUtils.chmod 775, target

设置权限。之后它运作良好。

答案 1 :(得分:1)

选项config.serve_static_assets = true告诉rails为您的应用程序提供静态资产,但该工作应该留给Apache。

您的问题听起来与您的Apache配置相关,而不是rails。

我会看一下tutorial如何配置Apache和Passenger,以确保您的环境设置正确。

公共文件夹中的任何内容都应由Web服务器提供。但是myip:80 / public / images / tmp / image不是有效路径。您还需要在末尾添加一个带扩展名的文件名。