【问题标题】:heroku precompile assets is it necessaryheroku 预编译资产是否有必要
【发布时间】:2017-11-24 12:34:32
【问题描述】:

我已经开始学习 rails 并且已经构建了两个应用程序,一个简单的博客应用程序和一个商店应用程序。现在我在上传到heroku时遇到了一个术语预编译资产,有人可以向我解释一下在将应用程序部署到生产环境时是否有必要,因为我已经将我的商店应用程序上传到heroku没有任何问题?

【问题讨论】:

    标签: ruby-on-rails heroku


    【解决方案1】:

    资产是您的css + JS。预编译资产意味着它们被加入到单个 .css 和另一个单个 .js. 文件中(以在一个 HTTP 请求中加载它)。并且特殊的缩小机制适用于这两个文件(使它们更小)。默认情况下,Rails 以某种方式设置,它使用 dev 中的平均文件和 prod 中的编译文件。您可以在配置中轻松更改此设置,但除非您真的知道自己在做什么,否则不应该这样做。

    如果你愿意,你可以在本地运行 rake assets:precompile 编译这些文件,然后把它放到 git 中。我认为您可以在 heroku 配置中的 heroku 部署期间禁用/启用预编译。但是,总的来说,我会坚持使用默认设置。

    关于资产管道的更多信息:http://guides.rubyonrails.org/asset_pipeline.html

    【讨论】:

    • 我没有任何问题,在我知道预编译资产之前,我已经部署了这两个应用程序。这就是我问的原因,我不熟悉这个术语,所以如果现在没有必要,我真的不想涉足它。
    • 这不是那么重要,但这很容易用谷歌搜索。良好的基本网址:guides.rubyonrails.org/asset_pipeline.html。如果我的回答对您有帮助,并且正是您想要的,那么请为未来的读者打勾
    【解决方案2】:

    Rails 有一个资产管道,它由 Sprocket 和资产助手组成。

    资产管道将连接和缩小您的 CSS 和 javascript,并负责设置图像和其他资产的正确路径。这称为编译资产。

    在开发过程中,这是针对每个请求即时完成的,让您可以立即看到更改。

    在生产中,这会很慢,因此资产应该在部署时编译一次。 Heroku does this automatically 在提交后挂钩中为您服务。

    预编译是在本地运行rake assets:precompile,然后将结果上传或推送到服务器。如果您在不支持资产管道的情况下部署到服务器,则会执行此操作。例如,如果生产服务器没有运行 uglifier 所需的 javascript 运行时。

    它给 git 更改历史添加了大量噪音,并且手动执行任何操作是用户错误的常见来源。非常糟糕,只有在必要时才这样做。

    【讨论】:

      猜你喜欢
      • 2015-08-28
      • 1970-01-01
      • 2012-06-26
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 2023-03-09
      相关资源
      最近更新 更多