[英]Ruby Guard with Compass Watch
我的.net项目中有以下保护文件:
# Listen for chanes to css|js|cshtml files, copy to server_root, creating new folders as necessary
watch(%r{.+\.(css|js|cshtml?)$}) do |match|
puts Time.now.asctime + ': '+ match[0] + ' has changed'
copy_path = server_root + File.dirname(match[0])
if Dir.exists?(copy_path) == false
FileUtils.mkdir_p(copy_path)
end
FileUtils.cp_r(match[0], copy_path)
end
# Listen for changes to Sass files, compile to local folder
puts `compass compile --time --quiet`
guard :compass do
watch(%r{(.*)\.s[ac]ss$})
end
我要注意的是,随着时间的流逝,它变得越来越慢,并且导致我的CPU运行到最大。 这是我第一次这样做,但是基本上我想监视项目中的这些文件类型,在sass上进行指南针编译,并将所有更改的文件复制到IIS指向的另一个项目中的对应文件中。
我的主要问题是如何防止它导致我的CPU热运行,是否有任何改进措施可以使这种类型的操作更有效?
据我所知,您正在将文件从一个目录复制到另一个目录-同时监视两个目录,并且您的规则与源目录和目标目录都匹配,这会触发更改,并再次触发复制,直到发生的一切就是不断复制...
解决的办法是将这些文件看只有一个文件夹,并输出到一个无人值守的文件夹中。
最好将所有源文件放入“ src”中,并将server_root设置为“ public”,然后通过以下任一方法告诉警卫仅监视“ src”:
在命令行中传递要监视的src目录: bundle exec guard -w src
或在Guardfile
设置新directories
选项:
directories(%w(src))
另一个选择是忽略文件复制的目的地,例如在Guardfile
ignore([/^public\//])
这样一来,复制文件就不会一次又一次地触发复制。
您可能会在这里找到一些有用的信息: https : //github.com/guard/guard/wiki/Understanding-Guard
(有一些技巧可以告诉您幕后发生的事情,因此您可以确切地触发操作)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.