【发布时间】:2012-03-21 18:07:26
【问题描述】:
我有一个在 Heroku 上运行的 Rails 3.2 应用程序,它使用 CKEditor。现在,CKEditor 是一个相当大的文件和文件夹集合,并且可能是预编译资产所需时间的最大贡献者。在 assets:precompile 步骤上,定期推送到 Heroku 需要一分钟多的时间。
所以我现在在本地预编译,并且只有在我进行了编辑之后,再推送到 Heroku,以缩短部署时间。但是,我可怜的旧 Windows 笔记本电脑很容易因为 rake assets:precompile 而中断 15 分钟。这使得对 js 或 css 文件进行微小的编辑或添加非常痛苦。
我确实有 Heroku 文档要求的 config.assets.initialize_on_precompile = false。但我很确定实时猪是压缩,即 Uglifier。
有没有人建议我如何解决这个问题?我只是做错了吗?有没有办法只编译更改的文件?我可以/应该将 CKEditor 直接移动到公共目录以避免预编译吗?
【问题讨论】:
-
你是否使用非摘要文件?
-
抱歉,不确定您所说的非摘要文件是什么意思?
-
摘要文件是生成的文件,其文件名中包含 md5 哈希值。如果您在配置中将摘要设置为 true,则预编译任务会创建每个资产的摘要版本和非摘要版本。使用诸如
image_tag之类的rails 助手和诸如image-url之类的scss 助手将自动生成正确的摘要url。这留下了也生成的非摘要文件,您是否在您的应用程序中使用这些文件?基本上我要问的是,如果这些文件被删除了,你的应用还能正常运行吗? -
没有。我的应用程序代码仅使用帮助程序,因此使用摘要资产名称,但 CKEditor 动态包含插件 .js 文件,并且从 Chrome 检查框架中的网络监视器显示编辑器在页面上请求的摘要和非摘要文件.
-
您可以覆盖预编译 rake 任务,这样它就不会生成非摘要文件(大约减少 50% 的时间),但看起来它不适用于您的应用程序设置方式。
标签: ruby-on-rails ruby-on-rails-3 performance asset-pipeline precompile