Heroku不会加载预编译资产

时间:2013-11-14 01:38:27

标签: ruby-on-rails heroku assets

我在Heroku上有一个临时服务器,它的相同代码被推送到我的生产服务器(也在Heroku上),并且没有任何资产加载到分段中,但它们都在prod中工作。 Rails 3.2.11。

资产:预编译工作,我可以使用bash登录并查看在公共/资产下预编译的所有资产。但是当我试图查看它们时,我一直得到404。

日志得到了很多:

ActionController::RoutingError (No route matches [GET] "/assets/team_accessories_ad.png"):

我觉得我已经尝试了一切。即使文件存在,它也不会路由到公共/资产来获取它们。我做了一件明显不对的事吗?

由于

编辑:在我的情况下,它是由12factor gem(https://github.com/heroku/rails_12factor)引起的。当我删除这个宝石时,一切都开始工作了!

由于

2 个答案:

答案 0 :(得分:0)

您的问题是您的图片未在资产文件中动态关联:


<强> SCSS

Rails与SCSS捆绑在一起,因为这样可以正确预编译图像资源。使用rake assets:precompile时动态呈现SCSS,而CSS无法动态呈现资产

因为Rails fingerprints the assets预编译它们时,这意味着许多图像资产(在编译之前名称为XXXX.png)将在预编译之后具有损坏的路径(使它们成为{{3}} 1}})

解决方案是在scss中使用动态图像路径:

XXX-dsdasdfew5823459432jt342j52435.png

这允许您在预编译时动态渲染图像路径,使您能够在生产中查看图像

答案 1 :(得分:0)

我遇到了同样的问题,结果是由how Rails 4 handles static files的变化引起的。我将rails_12factor gem添加到我的生产组,它解决了这个问题。我想我可以通过添加rails_serve_static_assets而离开,但没有尝试过。