rake资产:预编译heroku不接收

时间:2013-10-27 16:22:59

标签: ruby-on-rails heroku assets precompile

啊,我从这些资产中得到了令人头疼的事:预编译的事情。当我第一次将app推送到heroku时,我在本地预先推出了它们。这一切都很好,但随后它不会对我在开发之后制作的css文件进行任何更改,因为它服务于预编译资产。所以现在,对于视觉事物,我不得不做耙资产:干净。我做了我想在本地app的更改,没有问题。然后,我再次预编译资产,并将更改推送到heroku,但现在它似乎甚至看不到我的资产。页面只是白色的东西,没有任何样式。

请帮忙!

1 个答案:

答案 0 :(得分:0)

你在使用heroku系统的2个部分时遇到了问题:


Asset Fingerprinting

资产指纹识别基本上会在资产文件的末尾添加一个MD5哈希,以保持它们的独特性和优势。取决于他们在文件中的任何关系。这很重要,因为每次编译资产时,它们都会生成这些新文件名,这会导致标准CSS陷入困境

您需要对CSS中的所有资产引用执行此操作:

  

将CSS文件更改为.css.scss

与静态CSS不同,SCSS是动态编译的,可以解析ruby代码。这意味着您可以像这样引用您的资产:

background-url: asset_url('/nav_bar/nagivgation_bg.png');

为您的CSS文件执行此操作,引用应该没问题


Serve Static Assets

Heroku需要您在Rails中运行静态资产。这很简单:

#/config/environments/production.rb
config.serve_static_assets = true

<强>更新

以下是一些实时代码,用于演示.scss文件中包含动态帮助程序的位置:

.confirmation .action_bar a.confirm {
        color: #fff;
        background: asset_url('modals/confirm_button/bg.png') top repeat-x;
        position: relative;
        margin: 0 0 0 7px;
}