【问题标题】:Heroku compiling assets that are locally pre-compiledHeroku 编译本地预编译的资产
【发布时间】:2013-07-09 08:10:07
【问题描述】:

在推送到 Heroku 之前,我们会在本地预编译我们的资产——因此在公共/资产中存在大量文件,这些文件大部分是 Heroku 在生产中使用的——我们在 0 毫秒的日志中看到了资产编译说明.但是,当 Heroku 在我们的布局标题中到达 javascript_include_tag "application" 并尝试重新编译所有 js 时,我们会遇到超时错误。

这是注定要发生的吗?我们如何才能让 Heroku 只使用本地编译的资产,而不是继续花费 50 年代再次编译资产?扩大测功机确实有帮助,但这并不能真正解决根本原因。

// 编辑以解释我们如何使用资产管道 //

我们在 app/assets/javascript 中有一个名为 application.js 的文件——这是清单文件,它引用了我们需要加载的所有 javascript。这是一个sn-p:

//= require js/libs/jquery-1.7.2.min
//= require js/libs/jquery-ui-1.8.21.custom.min
//= require js/libs/jquery.ui.touch-punch.min
//= require js/libs/less-1.3.0.min
//= require js/libs/modernizr-2.5.3.min

这个文件有 55 行。

然后我们在 app/views/layouts/application.html.haml 中使用 javascript_include_tag "application" 来调用该清单文件。

【问题讨论】:

    标签: ruby-on-rails heroku asset-pipeline


    【解决方案1】:

    有多种在 Heroku 上使用 Rails 资产管道的方法,由于您没有向我们提供有关实现的太多细节,我唯一可以推荐的就是阅读以下内容: https://devcenter.heroku.com/articles/rails-asset-pipeline

    如果您用精确的实施细节更新问题,我可以尝试提供更多帮助。

    【讨论】:

    • 您是否将 public/assets 文件夹推送到 Git(包括 manifest.yml)?
    • 确实如此,当我们推送到 Heroku 时,它就会被识别出来。
    • 所以您确认您收到来自 Heroku 的消息:“检测到 manifest.yml,假设资产是在本地编译的”?如果是,它仍然重新编译资产,这可能是他们系统中的一个错误。
    • 哦,这太令人兴奋了。是的,我得到了确切的信息。
    【解决方案2】:

    检查您的 config/environments/production.rb 设置:

    config.assets.compile = false
    config.assets.initialize_on_precompile = true
    

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 2015-08-28
      • 1970-01-01
      • 2011-12-19
      • 2012-06-26
      • 2012-11-29
      • 1970-01-01
      • 2014-02-19
      相关资源
      最近更新 更多