我已经开始学习rails了,我已经构建了两个应用程序,一个简单的博客应用程序和一个商店应用程序。现在我在上传到heroku时遇到了一个术语预编译资产,有人向我解释在将应用程序部署到生产时是必要的,因为我已经将我的商店应用程序上传到heroku而没有任何问题吗?
答案 0 :(得分:1)
资产是css
+ JS
。预编译资产意味着它们会加入单个.css
和另一个.js.
文件(在一个HTTP请求中加载它)。并且特殊的缩小机制应用于这两个文件(使它们变小)。默认情况下,Rails是以某种方式设置的,它使用dev中的平均文件和prod中的编译文件。你可以在配置中轻松改变它,但除非你真的知道你做了什么,否则你不应该这样做。
如果您愿意,可以在本地运行rake assets:precompile
编译此文件,然后将其放入git中。我认为您可以在heroku配置中的heroku部署期间禁用/启用预编译。但是,一般来说,我会坚持使用默认值。
有关资产管道的更多信息:http://guides.rubyonrails.org/asset_pipeline.html
答案 1 :(得分:0)
Rails有一个资产管道,它由Sprockets和资产助手组成。
资产管道将连接并缩小您的CSS和javascript,并负责设置图像和其他资产的正确路径。这称为编译资产。
在开发过程中,这会针对每个请求动态完成,让您立即看到更改。
在生产中,这将非常缓慢,因此资产应该在部署时编译一次。 Heroku does this automatically在post-commit钩子中为你提供。
预编译是指在本地运行rake assets:precompile
然后将结果上传或推送到服务器。如果您在没有资产管道支持的情况下部署到服务器,则会执行此操作。例如,如果生产服务器没有运行uglifier所需的javascript运行时。
它为git更改历史记录增加了大量噪音,手动执行任何操作都是用户错误的常见原因。所以非常糟糕,只有你必须这样做才能做到。