首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >config.assets.precompile的目的是什么?

config.assets.precompile的目的是什么?
EN

Stack Overflow用户
提问于 2011-11-04 16:19:23
回答 3查看 14K关注 0票数 31

在Rails 3.1中,您必须将希望包含在资产预编译中的白名单文件。您必须打开config/environments/production.rb,并显式地包括您想要预编译的资产:

config.assets.precompile += ['somestylesheet.css']

如果您不这样做,并且运行rake资产:预编译,您的资产将不会被复制到公共/资产,并且当找不到资产时,您的应用程序会引发异常(因此在生产中造成500个错误)。

为什么有这个必要?为什么没有自动预编译所有资产?

当前的方法在部署时会产生额外的代码和压力。难道不更容易把资产列入黑名单/排除掉,这样事情就会一触即发吗?还有其他人分享这种感觉吗?

EN

回答 3

Stack Overflow用户

发布于 2011-11-30 19:05:08

大多数资产是自动包含在资产预编译中的。根据RoR资产管道指南

编译文件的默认匹配程序包括application.js、application.css和所有不以js或css:[ /\w+\.(?!js|css).+/, /application.(css|js)$/ ]结尾的文件。

如果您有额外的资产要包括:

config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']

或者你可以重写它。

票数 21
EN

Stack Overflow用户

发布于 2012-05-14 22:29:36

我认为这与管道/链轮需要单独文件的能力有关。

例如,我的admin.js文件夹中有一个app/assets/javascripts文件。但它所做的只是需要其他几个.js文件。

代码语言:javascript
复制
//= require jquery
//= require jquery_ujs
//= require jquery.colorpicker.js
//= require jquery.wysiwyg.js
//= require wysiwyg.image.js
//= require jquery.fileupload.js
//= require jquery.fileupload-ui.js
//= require codemirror.js
//= require css.js
//= require admin_load

这是因为(a)我使用的是外部js插件,(b)我喜欢将诸如jQuery onload处理程序之类的东西保存在单独的文件中。

如果每个 .js文件都是预编译的,那么它将预编译每个单独的文件--这是完全不必要的。我所需要的只是预编译的单个admin.js文件。

CSS文件也是如此。

票数 8
EN

Stack Overflow用户

发布于 2011-11-04 22:21:09

资产预编译对我来说很酷,所以你不会最终部署你不想要的资产。也不要忘记丑陋的宝石,它有助于压缩您的javascripts。映像所有这些都是不存在的,您只需部署应用程序,就会发现您有未使用的css文件和未压缩的javascripts。你会有什么感觉。这只是我自己的观点,我说资产管道是铁路上最酷的东西。能够正确地管理你所有的资产。

请注意,如果我是rails,我不想编译您不想要的资产,所以您会在脑海中说,为什么这个家伙要编译这些资产。:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8012434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档