Rails:排除某些资产被预编译

时间:2012-05-07 15:49:43

标签: ruby-on-rails

我想要的是非常简单 - 我希望除了特定的css文件(引用图像资产,因此需要通过资产管道)之外的所有资产都要进行预编译。如何排除css文件被预编译?

2 个答案:

答案 0 :(得分:0)

根据您的需要,有几种可能的答案。我不太确定你在问什么。

如果它在app / assets中,那么你真的需要在那里通过资产管道来可用。在生产中,您需要预编译属于资产管道的所有资产 - 并且需要在生产模式下重新预编译。

如果资产名称没有scsssass后缀,它将不会通过scss / sass编译器,尽管它仍将通过资产管道进行指纹识别文件名,gzipping等。

如果您真的不希望资产在所有中通过资产管道,那么您无法真正将其放入app/assets。你必须把它放在public中。然后,如何生成到它的URL会让人感到困惑,最好的方法是使用public_path + "/subdir/foo.css"

但我不确定你问的是什么。如果您有一个引用图像路径的资产文件,通常您绝对需要通过资产管道!因为资产管道会为这些图像资产正确填写URL。您将需要在资产文件中使用Rails asset_path帮助程序来生成图像的URL。您可以在文件的末尾放置.erb,然后使用ERB代码<%= asset_path('my_asset.css') %> in it it. Or if it's sass, asset_path`可能已经内置到rails sass中,我忘了。

我并不完全明白你究竟遇到了什么问题,但我认为你所要求的可能并不是你所需要的。你看过Rails Asset Pipeline指南了吗?这很不错。 http://guides.rubyonrails.org/asset_pipeline.html

答案 1 :(得分:0)

听起来你真的想要一个与其他文件分开预编译的文件吗?

如果是这样,您只需将其添加到Rails.application.config.assets.precompile数组即可。请在config/initializers/assets.rb中查看注释行作为示例。