如何配置保护文件以监视Ruby / Rails环境中的app / helpers目录

时间:2015-09-02 20:05:11

标签: ruby-on-rails rspec guard

使用guard 2.12.8,我试图引起注意app / helpers目录中的文件。

我尝试了几件事,其中最新的是

  guard :rspec, cmd: "bundle exec rspec" do
  require "guard/rspec/dsl"
  dsl = Guard::RSpec::Dsl.new(self)

  # RSpec files
  rspec = dsl.rspec
  watch(rspec.spec_helper) { rspec.spec_dir }
  watch(rspec.spec_support) { rspec.spec_dir }
  watch(rspec.spec_files)
  watch(%r{^(app/helpers)/.*})

我已经阅读了Guard的文档,但还没找到Guard :: RSpec :: Dsl的特定文档。例子,但没有实际的"这里的工作原理"东西。指针会有所帮助。

1 个答案:

答案 0 :(得分:0)

Guard :: RSpec :: Dsl只是为了清理Guardfile中的regexp汤,仅此而已:

https://github.com/guard/guard-rspec/blob/master/lib/guard/rspec/dsl.rb#L52

如果这是你的整个Guardfile,你就错过了Rails部分:

https://github.com/guard/guard-rspec/blob/master/lib/guard/rspec/templates/Guardfile

已经有处理应用文件的规则:

https://github.com/guard/guard-rspec/blob/master/lib/guard/rspec/dsl.rb#L50

此外,guard-rspec将不知道根据哪个帮助文件更改运行哪些规格/功能 - 因此您必须决定是运行单元测试,还是运行功能测试,还是所有测试。

以下是“app file”(模块,帮助器,关注点)和spec文件之间的映射代码:

https://github.com/guard/guard-rspec/blob/master/lib/guard/rspec/dsl.rb#L13

(注意规范名称和路径是如何基于修改后的文件中的正则表达式捕获的)

因此,已经看过app文件:

https://github.com/guard/guard-rspec/blob/master/lib/guard/rspec/dsl.rb#L50

如果您有app/helpers/foo_helper.rb,则正则表达式将捕获helpers/foo_helper,这意味着必须存在名为spec/helpers/foo_helper_spec.rb的文件。

如果匹配的名称不存在,则需要自定义规则。

我想可以添加一些对助手的支持,但是很难猜出要运行哪些规格/功能(控制器已经非常混乱)。

我对人们对此问题(以及他们的项目布局是什么)没有任何反馈,因此我很难猜测如何改进/记录。