我阅读了文档但似乎无法理解您是否必须运行rake资产:每次更改scss文件或任何其他资产时都在本地进行预编译?难道不是有自动方式吗?我注意到的一件事是,我有时会忘记运行它,并且我的heroku更改不会出现。必须有一种方法在rails中自动设置它吗?
如果我改变
config.assets.compile = false
为真,会这样做吗?这样做的缺点是什么?
答案 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可能会大大减慢您的应用程序速度,这就是它仅用于开发的原因。