Guard现在真的开始挑剔我了。我想我有一个很好的正则表达式来选择我项目中的所有文件,除了扩展名为"log"的文件:
防护文件:
guard :rspec do
watch(%r{^.+$(?<!.log)})
end
悬钩子永久链接:http://rubular.com/r/qPyeSs54BF
但这没有任何结果。我保存任何文件,而警卫就像柠檬一样坐在那里。太烦人了。
当我这样做的时候也是一样:
guard :rspec do
watch(%r{^.+$})
end
悬钩子永久链接:http://rubular.com/r/UxFXyq9lRm
这才是真正让我着迷的地方。正如你从rubular链接中看到的,它是完全有效的正则表达式,但Guard不听。它什么时候不能只接受正则表达式?愚蠢的%r{}垃圾是怎么回事?我希望Guard不要试图变得聪明,在我调整它们时运行单个规范,然后在我调整这些规范时运行整个规范文件。
是否有一些总体配置可以让我设置guard在更新日志文件以外的任何文件时运行所有规范想做这么明智的事,简直是一场噩梦。
这是我的宝石:
来源'https://rubygems.org'
group :development do
gem 'capistrano'
gem 'guard-rspec'
gem 'guard-livereload', require: false
gem 'rb-fsevent'
gem 'debugger'
end
group :development, :test do
gem 'rspec-rails', '~> 2.14.0'
gem 'sqlite3'
end
group :test do
gem 'factory_girl_rails'
gem 'capybara', '~> 2.2.0'
gem 'selenium-webdriver'
# uses a program called 'libqtwebkit-dev' to build. To install 'libqtwebkit-dev' in Ubuntu, run
# sudo apt-get install libqtwebkit-dev
# gem 'capybara-webkit'
gem 'rb-readline'
gem 'launchy'
gem 'database_cleaner'
end
group :production do
gem 'pg'
end
# standard library
gem 'rails', '4.0.1'
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
group :doc do
gem 'sdoc', require: false
end
# custom
gem 'devise'
gem 'puma'
更新
也许这个正则表达式稍微好一点:
.+?.(?!log).+
http://rubular.com/r/dsYKzUE8FF
那么,我应该如何在我的保护文件中实现这一点呢?
简短回答:你没有。如果以任何方式修改其他特定文件集,您可以告诉Guard将特定文件集(因为没有更好的方法来引用regex结果)传递给特定插件。
警卫"正常工作"
- Guard必须已经准备好监视Gemfile所在的目录(尽管这是特定于平台/适配器的)
- 插件的设计是为了响应更改(修改、添加或删除)
- 插件必须设计为实际处理该文件(而不是忽略更改)
来源:https://github.com/guard/guard/wiki/Understanding-Guard
我建议任何有兴趣使用Guard的人访问上面的链接。