关于rake资产的混淆:清理/清理rails中的资产pipe道

有人能告诉我什么命令rake assets:clean真的吗? 不幸的是,Rails指南不提及它。 还有命令rake assets:cleanup 。 有什么不同?

另外有人可以告诉我什么时候需要运行rake assets:precompile生产。 在将所有应用程序文件部署到我的生产服务器之后,是否在服务器控制台上运行它? 或者我在本地机器上precompile ,然后部署所有文件?

谢谢大家

注意:这个答案是rails 3特定的。 对于导轨4和更高版本,请看这里的其他答案。

如果您在本地计算机上进行预编译,则可以将这些生成的资产提交到存储库并继续进行部署。 不需要在生产机器上编译它们。

但是它引入了一个问题:现在,当您更改源文件(coffescript / scss)时,应用程序将不会接受更改,因为它将提供预编译的文件。 rake assets:clean删除这些预编译的文件。

在我的项目中,资源被预编译为部署的一部分。 Capistrano使它非常容易。

另外,我从来没有听说过rake assets:cleanup

运行rake assets:clobber实际上清理资产。 http://www.dixis.com/?p=735

Sergio的回答在Rails 3中是完全正确的rake assets:clean已经预先编译到public/assets目录中的所有资产。

在Rails 4中,你运行rake assets:clobber来做同样的事情。

如果您运行rake assets:precompile使用以下configurationrake assets:precompile (默认情况下在分期和生产中打开):

 # config/environments/production.rb config.assets.digest = true 

你编译的资产得到时间戳。 这意味着您可以在保留旧资产的同时编译新资产。 您通常希望在生产中这样做,所以您的网站仍然会在您运行precompile来创build新文件时访问旧文件(因为您已经添加了新的CSS / JavaScript)。 您现在想要摆脱不再使用的旧文件。 clean它将删除旧版本的预编译资产,同时保留新资产。

rake assets:clean删除编译的资产。 它由cap deploy:assets:clean运行,以通常从远程服务器上移除已编译的资产。

cap deploy:clean通常从远程服务器上删除旧版本。 这不是rake assets:clean

耙!=帽

rake assets:clean现在由cap deploy:cleanup_assets运行。 添加require 'capistrano/rails/assets'到你的Capfile,你会得到这个上限任务。 我的capistrano版本是v3.2.1。

使用git clean -f文件的未跟踪文件,使用git clean -f -d目录