首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Guard-rspec和ember不能很好地协同工作

Guard-rspec和ember不能很好地协同工作
EN

Stack Overflow用户
提问于 2017-08-10 23:08:17
回答 2查看 235关注 0票数 6

Rails 4.2.7防护-rspec 4.7.3

由于我安装了ember-cli-rails,ember应用程序会阻止guard-spec运行并触发数百个错误。这里有一个错误:

代码语言:javascript
复制
Directory: /home/sylvain/dev/placedemarche/marketadmin/tmp/broccoli_merge_trees-output_path-rlX3b4rm.tmp/marketadmin/tests/unit

    is already being watched through: /home/sylvain/dev/placedemarche/marketadmin/tmp/broccoli_persistent_filterbabel__babel_marketadmin-output_path-Nv8C3Z67.tmp/marketadmin/tests/unit

    MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
    ** ERROR: directory is already being watched! **

我在防护文件中尝试了多种方法,甚至移除了所有的手表:

代码语言:javascript
复制
guard 'rspec',:cli => "--drb --format progress",all_after_pass: false do
  # ignore /marketadmin/ 
  # watch(%r{^spec/(.+)_spec\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
  # watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
  # watch('spec/spec_helper.rb')  { "spec" }

  # # Rails example
  # watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
  # watch(%r{^app/(.*)(\.erb|\.haml)$})                 { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
  # watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
  # watch(%r{^spec/support/(.+)\.rb$})                  { "spec" }
  # watch('config/routes.rb')                           { "spec/routing" }
  # watch('app/controllers/application_controller.rb')  { "spec/controllers" }
  # # Capybara request specs
  # watch(%r{^app/views/(.+)/.*\.(erb|haml)$})          { |m| "spec/requests/#{m[1]}_spec.rb" }
end

我已经尝试了多个版本的忽略,但它仍然失败。

问题基本上是用来生成预览应用程序的tmp文件夹ember让guard发疯了。而且似乎忽略守卫并没有真正使守卫避开文件夹,它仍然扫描它。

如何使防护文件忽略ember文件夹,以便恢复rspec-guard?

编辑

我已经按如下方式编辑了guardfile:

代码语言:javascript
复制
guard 'rspec',:cli => "--drb --format progress",all_after_pass: false do
  ignore(%r{^marketadmin/(.+)}) 
end

它仍然失败,并出现以下错误(错误太多,我不得不将终端内存设置为30,000行,20,000行是不够的):

代码语言:javascript
复制
18:24:39 - INFO - Guard::RSpec is running
18:24:39 - DEBUG - Hook :start_end executed for Guard::RSpec
D, [2017-08-24T18:25:00.166155 #20128] DEBUG -- : Waiting for processing to start...
18:25:00 - INFO - Guard is now watching at '/home/sylvain/dev/placedemarche'
18:25:00 - DEBUG - Start interactor
        ** ERROR: directory is already being watched! **

        Directory: /home/sylvain/dev/placedemarche/marketadmin/tmp/funnel-input_base_path-WVhWKrYs.tmp

        is already being watched through: /home/sylvain/dev/placedemarche/marketadmin/node_modules/qunit-notifications

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
        ** ERROR: directory is already being watched! **

        Directory: /home/sylvain/dev/placedemarche/marketadmin/tmp/funnel-input_base_path-ULeE6XMF.tmp

        is already being watched through: /home/sylvain/dev/placedemarche/marketadmin/app

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
EN

回答 2

Stack Overflow用户

发布于 2017-08-24 14:59:39

正如我在IRC频道中写的,我不太理解,你想要避免哪个子文件夹?

如果我在ignore(%r{frontend/(.+)})语句的顶部添加我的防护文件,或者在你的例子中添加ignore(%r{marketadmin/(.+)}),它就相当成功地忽略了前端应用程序中发生的任何事情。

我的Guardfile看起来像这样:

代码语言:javascript
复制
guard :rspec, cmd: "bundle exec rspec" do
  require "guard/rspec/dsl"
  dsl = Guard::RSpec::Dsl.new(self)

  # Feel free to open issues for suggestions and improvements

  ignore(%r{frontend/(.+)})
  # RSpec files
  rspec = dsl.rspec
  watch(rspec.spec_helper) { rspec.spec_dir }
...

我没有使用ember的经验,而你正在使用的这个花椰菜的东西,也许问题是在那里完成的配置?

一个有用的命令可以是:

代码语言:javascript
复制
LISTEN_GEM_DEBUGGING=2 bundle exec guard -d

希望上面的内容能有所帮助。干杯!

更新:检查了你看到的错误,并在安装了创建符号链接的broccolli-funnel之后,开始在我的mock设置中看到这些错误,guard使用的侦听器gem似乎有问题,不幸的是,我今天没有时间深入分析……也许你可以试着把ember放在rails目录之外。

票数 2
EN

Stack Overflow用户

发布于 2021-04-29 05:22:42

Guard现在可以指定要监视的目录。如果您只指定所需的顶级目录,而将marketadmin或ember-cli子目录的名称留在列表之外,那么它将被忽略:

代码语言:javascript
复制
  directories %w[app config lib spec features]

根据应用程序的设置,您可能需要其他目录,但关键是要排除marketadmin

https://github.com/guard/guard/wiki/Guardfile-DSL---Configuring-Guard#directories

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45617436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档