你总是需要运行rake资产:在本地预编译吗?

时间:2015-02-12 02:08:31

标签: ruby-on-rails ruby-on-rails-4

我阅读了文档但似乎无法理解您是否必须运行rake资产:每次更改scss文件或任何其他资产时都在本地进行预编译?难道不是有自动方式吗?我注意到的一件事是,我有时会忘记运行它,并且我的heroku更改不会出现。必须有一种方法在rails中自动设置它吗?

如果我改变

  

config.assets.compile = false

为真,会这样做吗?这样做的缺点是什么?

3 个答案:

答案 0 :(得分:2)

您不必为Heroku预编译您的资产以便为他们服务。如果您尚未在本地预编译资产,Heroku将自动预编译您的资产。阅读有关Rails 3中资产管道的this heroku doc(即使您已经在使用Rails 4)。然后在heroku上阅读有关Rails 4中资产管道的this doc

特别注意这一部分:

  

如果在您的应用中检测到public / assets / manifest.yml,Heroku将会   假设您自己处理资产编译,而不是   尝试编译您的资产。 Rails 4使用一个名为的文件   public / assets / manifest-.json。在这两个版本上你   可以通过在本地运行$ rake assets:precompile来生成此文件   将生成的文件检入Git。

答案 1 :(得分:0)

rake assets:必须为生产环境运行预编译。不需要为开发环境运行命令。该命令用于将所有文件收集到一个文件中,因此可以更轻松地在生产中使用。正在开发资产文件夹中他们想要的样式。运行该命令后,样式将放在公用文件夹中。

答案 2 :(得分:0)

如果您忘记运行rake资产:预编译Heroku应该自动执行。它可能不是的一个原因是,如果你已经检查了你的公共文件夹到git,那么在slug编译过程中,Heroku将假设你预先编译了你的资产而不会为你做。

设置config.assets.compile = true可能会大大减慢您的应用程序速度,这就是它仅用于开发的原因。