Guard: Ctrl-C 使守卫崩溃

创建于 2016-06-16  ·  21评论  ·  资料来源: guard/guard

每当我尝试取消正在运行的测试(使用 guard-rspec 插件)时,guard shell 就会崩溃并且测试会继续。 我可以通过打开守卫并按 ctrl-c 来简单地复制。 完整的调试会话输出和诊断信息如下。 它可能与 ruby​​ 版本有关,因为它在 2.3.0 但不是 2.3.1 上工作正常。

$ bundle exec guard --debug
13:09:37 - DEBUG - Notiffany: gntp not available (Please add "gem 'ruby_gntp'" to your Gemfile and run your app with "bundle exec".).
13:09:37 - DEBUG - Notiffany: growl not available (Unsupported platform "linux-gnu").
13:09:37 - DEBUG - Notiffany: terminal_notifier not available (Unsupported platform "linux-gnu").
13:09:37 - DEBUG - Notiffany: libnotify not available (Please add "gem 'libnotify'" to your Gemfile and run your app with "bundle exec".).
13:09:37 - DEBUG - Command execution: which notify-send
13:09:37 - DEBUG - Notiffany: notifysend not available (libnotify-bin package is not installed).
13:09:37 - DEBUG - Notiffany: notifu not available (Unsupported platform "linux-gnu").
13:09:37 - DEBUG - Command execution: {"ALTERNATE_EDITOR"=>"false"} emacsclient --eval '1'
13:09:37 - DEBUG - Notiffany: emacs not available (Emacs client failed).
13:09:37 - DEBUG - Command execution: tmux -V
13:09:37 - DEBUG - Notiffany: file not available (No :path option given).
13:09:37 - DEBUG - Command execution: tmux -V
13:09:37 - DEBUG - Notiffany is using Tmux to send notifications.
13:09:37 - DEBUG - Command execution: tmux list-clients -F '#{client_tty}'
13:09:37 - DEBUG - Command execution: tmux show -t /dev/pts/0
13:09:37 - DEBUG - Notiffany is using TerminalTitle to send notifications.
13:09:37 - DEBUG - Command execution: hash stty
13:09:37 - DEBUG - Guard starts all plugins
13:09:37 - DEBUG - Hook :start_begin executed for Guard::RSpec
13:09:37 - INFO - Guard::RSpec is running
13:09:37 - DEBUG - Hook :start_end executed for Guard::RSpec
13:09:38 - INFO - Guard is now watching at '/mnt/data1/home/andrew/projects/039-disciple/disciple-api'
13:09:38 - DEBUG - Start interactor
[1] guard(main)>  [ pressed ctrl-c here ]
[1] guard(main)> ⏎                                                                                                                                                                                                                                                                                                            $  [typed a few random characters]
$ aError: Input/output error - read
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:198:in `readline'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:198:in `block in input_readline'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/input_lock.rb:115:in `interruptible_region'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:197:in `input_readline'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:183:in `block in read_line'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:129:in `handle_read_errors'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:170:in `read_line'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:98:in `read'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:68:in `block in repl'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:67:in `loop'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:67:in `repl'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:38:in `block in start'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/input_lock.rb:61:in `__with_ownership'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/input_lock.rb:79:in `with_ownership'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:38:in `start'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:15:in `start'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_class.rb:169:in `start'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-byebug-3.4.0/lib/pry-byebug/pry_ext.rb:11:in `start_with_pry_byebug'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/guard-2.14.0/lib/guard/jobs/pry_wrapper.rb:102:in `block (2 levels) in _switch_to_pry'
[... this section below repeats several times ...]
[1] guard(main)> Error: Input/output error - read
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:198:in `readline'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:198:in `block in input_readline'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/input_lock.rb:115:in `interruptible_region'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:197:in `input_readline'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:183:in `block in read_line'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:129:in `handle_read_errors'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:170:in `read_line'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:98:in `read'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:68:in `block in repl'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:67:in `loop'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:67:in `repl'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:38:in `block in start'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/input_lock.rb:61:in `__with_ownership'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/input_lock.rb:79:in `with_ownership'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:38:in `start'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/repl.rb:15:in `start'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_class.rb:169:in `start'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-byebug-3.4.0/lib/pry-byebug/pry_ext.rb:11:in `start_with_pry_byebug'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/guard-2.14.0/lib/guard/jobs/pry_wrapper.rb:102:in `block (2 levels) in _switch_to_pry'
[... end of repeating section ...]
[1] guard(main)> Error: Input/output error - read
FATAL: Pry failed to get user input using `Readline`.
To fix this you may be able to pass input and output file descriptors to pry directly. e.g.
  Pry.config.input = STDIN
  Pry.config.output = STDOUT
  binding.pry

13:11:22 - DEBUG - Interactor was stopped or killed
13:11:22 - DEBUG - Guard stops all plugins
13:11:22 - DEBUG - Command execution: tmux set -q -u -t /dev/pts/0 status-left-bg
13:11:22 - DEBUG - Command execution: tmux set -q -u -t /dev/pts/0 status-right-bg
13:11:22 - DEBUG - Command execution: tmux set -q -u -t /dev/pts/0 status-left-fg
13:11:22 - DEBUG - Command execution: tmux set -q -u -t /dev/pts/0 status-right-fg
13:11:22 - DEBUG - Command execution: tmux set -q -u -t /dev/pts/0 message-bg
13:11:22 - DEBUG - Command execution: tmux set -q -u -t /dev/pts/0 message-fg
13:11:22 - DEBUG - Command execution: tmux set -q -u -t /dev/pts/0 display-time
$ uname -a
Linux triton.avito.uk 4.5.0-x86_64-linode65 #2 SMP Mon Mar 14 18:01:58 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]

据我所知,我的 Ruby 2.3.1 是使用 Readline 支持编译的:

$ ruby -rreadline -e 'puts Readline::VERSION'
6.3

不幸的是,我不确定接下来的调试步骤是什么。

bug help needed work in progress

最有用的评论

我不确定是否相关,但是当我在 RSpec 期间按 CTRL-C 时,我又回到了 pry 状态,但是 guard 再也不会运行任何东西了。 我还没有尝试调试它。 使用和不使用 bundle exec 的行为是相同的。 我尝试使用您在上面指定的分支运行,并且在停止 RSpec 后我的守卫退出的位置确实有所不同。

任何想法? 是否与此有关? 如果您对此没有立即了解,我很乐意深入研究内部结构。 我们有很多缓慢的规范,能够在中途停止规范会节省很多时间。 :)

所有21条评论

我也在 2.2.5 上遇到了这个问题。

我也遇到了这个(实际上相同的堆栈跟踪),但使用 Ruby v2.3.0 ,Guard v2.13.0

如果我通过bundle exec guard运行 Guard,然后在提示符下按Ctrl-C ,我就会看到这个问题。 但是,如果我不通过 bundle 运行guard ,则按Ctrl-C不会导致问题。

完整的 Ruby 和 Readline 版本:

$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15.5.0]
$ ruby -rreadline -e 'puts Readline::VERSION'
6.3

在 Pry 提示错误后,我得到类似于此处描述的终端损坏:
https://github.com/pry/pry/issues/1275
https://github.com/pry/pry/issues/1183
https://github.com/guard/guard/issues/719

如果我手动安装rb-readline gem,这会修复之后发生的损坏问题,但Ctrl-C产生相同的堆栈跟踪。 安装此 gem 后,guard 报告我的 Readline 版本如下:

[1] guard(main)> Readline::VERSION
=> "5.2"

在这里遇到完全相同的问题......正如打包程序很好。

$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin14]
$ guard -v
Guard version 2.14.0

我的 Readline 版本在内部和外部都是6.3

它看起来像是几件事的组合。

我可能会创建一个“快速修复”分支,然后再研究如何集成它。

好的,我用一些技巧创建了一个分支: https :

以下是在Gemfile

gem 'guard', github: 'guard/guard', branch: 'experimental_fixes'

然后像往常一样捆绑更新和bundle exec guard

此外,您可能想尝试禁用通知以查看是否也有帮助:

bundle exec guard -n f

请报告问题以及修复。

这应该解决的一些问题:

  1. 使用 ctrl-C 退出警卫时,Pry 应停止崩溃
  2. 最后几行之后的输出不应隐藏下面的 shell 提示
  3. TMux 和 TerminalTitle 通知程序似乎都会导致输出问题
  4. 我还没有检查过,但 LumberJack 日志记录可能在不应该使用的时候使用了时间刷新。
  5. STDERR 流不再关闭
  6. Pry 不再被杀死并加入 - 它被唤醒(因此它不应该“挂起”考虑其他调整)

一些回归/问题:

  1. 如果警卫/任务搞砸了彩色输出,它将无法修复(重置控制台已被禁用)。
  2. 没有对此进行测试(我想看看我是否可以先解决问题)
  3. 未在 MRI 2.3.1 以外的其他红宝石上进行测试

其他解决方法:

如果你很绝望,你可以尝试在没有 Pry 和通知的情况下使用 Guard:

bundle exec guard -n f -i

如果这有帮助或有其他问题,请告诉我,以便我可以努力正式修复和发布。

随意提交有选择地使用任何这些修复程序的 PR(尽管测试会很好)。

我推了一些调整。

您可以提取这些更改(或bundle update如果您使用上面的Gemfile行)然后将其添加到您的Guardfile以查看是否有帮助:

UI.options.merge!(flush_seconds: 0, level: :debug, device: 'guard.log')
notification :off

它还将错误记录到guard.log 。 (虽然这可能会触发扫描 OSX 上的整个目录)。

谢谢@e2 ,不幸的是我运气不佳:

  • 在没有附加标志的情况下运行时,Ctrl-C 上的崩溃行为与“experimental_features”分支保持相同。
  • 提供-n f没有区别。
  • 使用-i参数可以防止在测试中使用 Ctrl-C 时崩溃(尽管很难退出!)。

我现在经常在使用 Ctrl-D 退出时遇到以下异常之一,可能是竞争条件:

19:56:17 - INFO - Bundle already up-to-date
19:56:17 - INFO - Guard is now watching at '/mnt/data1/home/andrew/projects/042-joinly/joinly-app'
^Clog writing failed. can't modify frozen IOError
➜  joinly-app git:(master) ✗
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/guard-d299ad21cfa8/lib/guard/commander.rb:69:in `stop': undefined method `destroy' for #<Guard::Jobs::Sleep:0x0056104497dd80> (NoMethodError)
        from /home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/guard-d299ad21cfa8/lib/guard/commander.rb:53:in `start'
        from /home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/guard-d299ad21cfa8/lib/guard/cli/environments/valid.rb:16:in `start_guard'
        from /home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/guard-d299ad21cfa8/lib/guard/cli.rb:122:in `start'
[...]

19:56:29 - INFO - Bundle already up-to-date
19:56:30 - INFO - Guard is now watching at '/mnt/data1/home/andrew/projects/042-joinly/joinly-app'
^CE, [2016-08-01T19:56:38.584021 #10597] ERROR -- : run() in thread failed: stream closed:\n /home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify/notifier.rb:300:in `readpartial'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify/notifier.rb:300:in `readpartial'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify/notifier.rb:271:in `read_events'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify/notifier.rb:238:in `process'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify/notifier.rb:221:in `run'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/listen-3.1.5/lib/listen/adapter/linux.rb:39:in `_run'
[...]

带有bundle exec guard -n fGuardfile行似乎会延迟错误。 在测试运行期间按 Ctrl-C 仍会导致 Pry 分离,测试继续写入 STDOUT 并混合活动提示。 但它以同样的方式结束:

[1] guard(main)> Error: Input/output error - read
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.4/lib/pry/repl.rb:198:in `readline'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.4/lib/pry/repl.rb:198:in `block in input_readline'
/home/andrew/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.10.4/lib/pry/input_lock.rb:115:in `interruptible_region'

感谢@Odaeus检查这一点。

首先,我搞砸了非撬交互器。 (我只是推动了一个提交,以解决这个问题)。

其次,您遇到了这个 rb-inotify 错误: https :

为此我创建了一个修复程序(尚未合并或发布)。

在那之前,您在Gemfile

gem 'rb-inotify', github: 'e2/rb-inotify', branch: 'e2-fix_ioerror_when_closed'

这将解决问题2。

对于问题 3 - 这可能是一项正在进行的工作,但请确保您的Guardfile

UI.options.merge!(flush_seconds: 0, level: :debug, device: 'guard.log')
notification :off

您可以在另一个窗口的输出中使用tail -f guard.log

我担心必须重新设计整个 Pry 会话处理才能正确解决此问题。 这可能需要整个星期六才能解决:(

如果我有更多补丁,我会尽快让这里的每个人都知道。

好的,这应该有效(据我所知):

在您的Gemfile

 gem "guard", github: "guard/guard",
                branch: "experimental_fixes", ref: "c6ab8a0"

 gem "listen", require: false, github: "guard/listen",
                branch: "advanced_thread_debugging", ref: "31053de"

  gem "guard-rspec", require: false, github: "guard/guard-rspec",
                     branch: "ctrl_c_workaround", ref: "ee0b21d"

  gem "rb-inotify", require: false, github: "e2/rb-inotify",
                    branch: "e2-fix_ioerror_when_closed", ref: "99d2101"

这是相当多的补丁 - 随时查看、评论和发送 PR 以帮助我测试并尽快发布这些补丁。

谢谢!

@e2这种行为好多了,你可以看到我按 ctrl-c 的地方,它回到命令提示符,但进程正在退出。 它在最后引发了一个异常,它似乎是从伐木工人那里出来的,但规范确实停止运行。 谢谢你看这个。 希望这可以帮助!

^CGuard: INT signal, handling inside trap...                                                                                                             |  ETA: 00:02:03
Guard Pry job: handling interrupt
Guard Pry job: no thread, interrupting Guard

RSpec is shutting down and will print the summary report... Interrupt again to force quit.
Guard::RSpec: Interrupted by user. Waiting for RSpec to die...
➜  source_code git:(development) ✗  3/17 |========== 17 ==========>                                                                                                                         |  ETA: 00:02:28
Pending: (Failures listed here are expected and do not affect your suite's status)

  1) items can export items pdf export
     # Temporarily skipped with xit
     # ./spec/features/items_spec.rb:38


Top 3 slowest examples (25.2 seconds, 83.1% of total time):
  items can click export button and walk through modals
    14.92 seconds ./spec/features/items_spec.rb:26
  items appear in proper time periods
    10.28 seconds ./spec/features/items_spec.rb:51
  items can export pdf export
    0.00005 seconds ./spec/features/items_spec.rb:38

Finished in 30.33 seconds (files took 1.14 seconds to load)
3 examples, 0 failures, 1 pending

Randomized with seed 54136

Coverage report generated for RSpec to /Users/justin/dev/source_code/coverage. 1759 / 3324 LOC (52.92%) covered.

➜  source_code git:(development) ✗
10:18:10 - INFO - Inspecting Ruby code style: spec/features/items_spec.rb
Inspecting 1 file
.

1 file inspected, no offenses detected

10:18:11 - INFO - Bye bye...
/Users/justin/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/lumberjack-1.0.10/lib/lumberjack/device/writer.rb:89:in `close': closed stream (IOError)
    from /Users/justin/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/lumberjack-1.0.10/lib/lumberjack/device/writer.rb:89:in `close'
    from /Users/justin/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/lumberjack-1.0.10/lib/lumberjack/logger.rb:140:in `close'
    from /Users/justin/dev/source_code/vendor/cache/guard-c6ab8a0b70a3/lib/guard/aruba_adapter.rb:51:in `execute'
    from /Users/justin/dev/source_code/vendor/cache/guard-c6ab8a0b70a3/lib/guard/aruba_adapter.rb:20:in `execute!'
    from /Users/justin/dev/source_code/vendor/cache/guard-c6ab8a0b70a3/bin/_guard-core:11:in `<main>'

@jetheredge - 感谢您对此进行测试。

我不会有时间太早研究这个:(

我很高兴它更有用。

根据您的示例,RSpec 应该停止,Guard 应该回到 Pry 提示。

我认为这里的问题是 Guard 捕获了 INT 信号。 不应该。 它应该只用于杀死 Pry,但如果 Pry 没有运行(并且没有作业),它就不应该做任何事情。

如果有人想测试,我会为此接受 PR。 (基本上,“Guard Pry 作业:没有线程,中断 Guard”不应该发生 - 在 PryWrapper 中应该忽略中断)。

@e2谢谢! 下周我会考虑创建一个 PR。

@jetheredge - 我认为替换这一行就足够了:

https://github.com/guard/guard/blob/c6ab8a0/lib/guard/jobs/pry_wrapper.rb#L108

只有一个“回报”。

此外,Ctrl-C 无论如何都不应该退出守卫。

@e2 - 感谢指导,这周出乎意料地忙,我很快就会创建一个 PR。

我们都是,相信我 ;)

(如果你不相信我,请查看 Guard 中的问题列表 -
几乎所有这些都是特征)。

2016 年 8 月 11 日星期四上午 04:10:08 -0700,Justin Etheredge 写道:

@e2 - 感谢指导,这周出乎意料地忙,我很快就会创建一个 PR。

你收到这个是因为你被提到了。
直接回复此邮件或在 GitHub 上查看:
https://github.com/guard/guard/issues/842#issuecomment -239132345

我很抱歉,我还没有忘记这件事,它在我最近被埋葬的名单上。 我仍在计划这样做,只是花费的时间比预期的要长。

我也被埋没了。 希望我能完成补丁并发布。

我不确定是否相关,但是当我在 RSpec 期间按 CTRL-C 时,我又回到了 pry 状态,但是 guard 再也不会运行任何东西了。 我还没有尝试调试它。 使用和不使用 bundle exec 的行为是相同的。 我尝试使用您在上面指定的分支运行,并且在停止 RSpec 后我的守卫退出的位置确实有所不同。

任何想法? 是否与此有关? 如果您对此没有立即了解,我很乐意深入研究内部结构。 我们有很多缓慢的规范,能够在中途停止规范会节省很多时间。 :)

我在 MacOs Sierra 上也遇到了这个问题。

当我取消测试时,文件的下一个更改不会运行测试。 它停止观看。

我有同样的问题。 有任何更新吗?

同样的问题在这里。 使用 macOS Catalina。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

greyblake picture greyblake  ·  18评论

lastobelus picture lastobelus  ·  5评论

thibaudgg picture thibaudgg  ·  3评论

tomrossi7 picture tomrossi7  ·  6评论

jonmchan picture jonmchan  ·  16评论