有人可以向我解释命令rake assets:clean
的真正含义吗?不幸的是Rails指南不提它。还有命令rake assets:cleanup
。差异是什么?
此外,有人可以告诉我何时必须在生产中运行rake assets:precompile
。在将所有应用程序文件部署到生产服务器后,是否在服务器控制台上运行它?或者我在本地计算机上precompile
然后部署所有文件?
全部谢谢
答案 0 :(得分:65)
如果您在本地计算机上进行预编译,则可以将这些生成的资产提交到存储库中并继续部署。无需在生产机器上编译它们。
但它引入了一个问题:现在当您更改源文件(coffescript / scss)时,应用程序将不会接收更改,因为它将提供预编译文件。 rake assets:clean
删除这些预编译文件。
在我的项目中,资产被预编译为部署的一部分。卡皮斯特拉诺非常容易。
另外,我从未听说过rake assets:cleanup
。
答案 1 :(得分:51)
运行rake assets:clobber
以实际清理资产。
http://www.dixis.com/?p=735
答案 2 :(得分:24)
Sergio的答案在Rails 3中完全正确。rake assets:clean
删除了之前预编译到public/assets
目录中的所有资产。
在Rails 4中,您运行rake assets:clobber
来执行相同的操作。
如果您使用以下配置运行rake assets:precompile
(默认情况下在暂存和生产中已启用):
# config/environments/production.rb
config.assets.digest = true
您编译的资产获得时间戳。这意味着您可以在保留旧资产的同时编译新资产。您通常希望在生产中执行此操作,以便您在运行precompile
时仍然可以访问旧文件以创建新文件(因为您添加了新的css / javascript)。您现在想要删除不再使用的旧文件。 clean
它会删除旧版本的预编译资产,同时保留新资产。
答案 3 :(得分:7)
rake assets:clean
删除已编译的资产。它由cap deploy:assets:clean
运行,通常从远程服务器中删除已编译的资产。
cap deploy:clean
通常从远程服务器中删除旧版本。它不是rake assets:clean
rake!= cap
答案 4 :(得分:1)
rake assets:clean
现在由cap deploy:cleanup_assets
运行。将require 'capistrano/rails/assets'
添加到您的Capfile中,即可获得此上限任务。我的capistrano版本是v3.2.1。
答案 5 :(得分:-4)
清理那些未跟踪的文件,文件为git clean -f
,目录为git clean -f -d