ruby-on-rails 关于rake资产的困惑:在rails中清理资产管道

2w3rbyxf  于 2023-03-09  发布在  Ruby
关注(0)|答案(7)|浏览(182)

有人能给我解释一下命令rake assets:clean到底是做什么的吗?不幸的是Rails指南没有提到它。还有命令rake assets:cleanup。有什么区别吗?
此外,有人能告诉我什么时候必须在生产环境中运行rake assets:precompile吗?是在将所有应用程序文件部署到生产服务器后在服务器控制台上运行它吗?还是在本地计算机上运行precompile,然后部署所有文件?
谢谢大家

ryevplcw

ryevplcw1#

注:此答案特定于rails 3。对于rails 4及更高版本,请查看此处的其他答案。

如果您在本地机器上预编译,那么您可以将这些生成的资产提交到存储库中并继续部署,而无需在生产机器上编译它们。
但它引入了一个问题:现在当你改变源文件(coffescript / scss)时,app不会接受这些改变,因为它会提供预编译文件。rake assets:clean会删除这些预编译文件。
在我的项目中,资产是作为部署的一部分进行预编译的,Capistrano使它变得非常容易。
还有,我从来没有听说过rake assets:cleanup

siv3szwd

siv3szwd2#

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

e5nqia27

e5nqia273#

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删除了旧版本的预编译资产,同时保留了新资产。

3df52oht

3df52oht4#

rake assets:clean删除编译的资产。它由cap deploy:assets:clean运行,用于删除编译的资产,通常从远程服务器删除。
cap deploy:clean通常从远程服务器删除旧版本。它不是rake assets:clean
耙!=盖

e7arh2l6

e7arh2l65#

rake assets:clean现在由cap deploy:cleanup_assets运行。将require 'capistrano/rails/assets'添加到Capfile中,您将获得此cap-task。我的capistrano版本是v3.2.1。

vq8itlhq

vq8itlhq6#

rails assets:clean[keep]
    Remove old compiled assets

rails assets:clobber
    Remove compiled assets

clean删除以前编译的资源,保留当前版本

qvk1mo1f

qvk1mo1f7#

git clean -f(文件)和git clean -f -d(目录)清除那些未跟踪的文件

相关问题