(guard-rspec νλ¬κ·ΈμΈμ μ¬μ©νμ¬) μ€ν μ€μΈ ν μ€νΈλ₯Ό μ·¨μνλ €κ³ ν λλ§λ€ κ°λ μμ΄ μΆ©λνκ³ ν μ€νΈκ° κ³μλ©λλ€. κ°λλ₯Ό μ΄κ³ ctrl-cλ₯Ό λλ₯΄λ κ²λ§μΌλ‘ κ°λ¨νκ² μ¬νν μ μμ΅λλ€. μ 체 λλ²κ·Έ μΈμ μΆλ ₯ λ° μ§λ¨ μ 보λ μλμ μμ΅λλ€. 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
λΆννλ μ΄κ²μ λλ²κΉ νκΈ° μν λ€μ λ¨κ³κ° 무μμΈμ§ μ λͺ¨λ₯΄κ² μ΅λλ€.
λλ λν 2.2.5μμ μ΄κ²μ κ²½ννκ³ μμ΅λλ€.
λλ λν μ΄κ²μ κ²½ννκ³ μμ§λ§ (ν¨κ³Όμ μΌλ‘ λμΌν μ€ν μΆμ ) Ruby v2.3.0
, Guard v2.13.0
μμ΅λλ€.
bundle exec guard
λ₯Ό ν΅ν΄ Guardλ₯Ό μ€νν λ€μ ν둬ννΈμμ Ctrl-C
λ₯Ό λλ₯΄λ©΄ λ¬Έμ κ° νμλ©λλ€. κ·Έλ¬λ λ²λ€μ ν΅νμ§ μκ³ 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"
μ¬κΈ°μμ μ νν λμΌν λ¬Έμ κ° λ°μν©λλ€... @WilHallμ΄ μ μν κ²μ²λΌ μΈλΆ λ²
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin14]
$ guard -v
Guard version 2.14.0
λ΄ Readline λ²μ μ κ°λ λ΄λΆμ μΈλΆ λͺ¨λ 6.3
μ
λλ€.
λͺ κ°μ§λ₯Ό ν©μΉ κ² κ°μ΅λλ€.
"quickfix" λΈλμΉλ₯Ό λ§λ€κ³ λμ€μ ν΅ν©νλ λ°©λ²μ μμλΌ κ²μ λλ€.
μ’μ, λͺ κ°μ§ ν΄νΉμΌλ‘ λΆκΈ°λ₯Ό λ§λλλ€. https://github.com/guard/guard/tree/experimental_fixes
Gemfile
μμ μ¬μ©νλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
gem 'guard', github: 'guard/guard', branch: 'experimental_fixes'
κ·Έλ° λ€μ νμμ κ°μ΄ μ
λ°μ΄νΈμ bundle exec guard
λ₯Ό λ²λ€λ‘ μ 곡ν©λλ€.
λν μλ¦Όμ λΉνμ±ννμ¬ λ€μ μμ μλ λμμ΄ λλμ§ νμΈν μ μμ΅λλ€.
bundle exec guard -n f
λ¬Έμ λ° μμ μ¬νμ λ³΄κ³ νμμμ€.
ν΄κ²°ν΄μΌ ν λͺ κ°μ§ λ¬Έμ :
μΌλΆ νκ·/λ¬Έμ :
κΈ°ν ν΄κ²° λ°©λ²:
νμ¬μ μ΄λΌλ©΄ Pry λ° μλ¦Ό μμ΄ Guardλ₯Ό μ¬μ©ν΄ λ³Ό μ μμ΅λλ€.
bundle exec guard -n f -i
μ΄κ²μ΄ λμμ΄ λκ±°λ λ€λ₯Έ λ¬Έμ κ° μλ κ²½μ° μλ €μ£Όμλ©΄ 곡μμ μΌλ‘ μμ λ° λ¦΄λ¦¬μ€ν μ μμ΅λλ€.
μ΄λ¬ν μμ μ¬ν μ€ νλλ₯Ό μ νμ μΌλ‘ μ¬μ©νλ PRμ μμ λ‘κ² μ μΆνμμμ€(ν μ€νΈλ μ’μ§λ§).
μ½κ°μ μμ μ κ°νμ΅λλ€.
λ³κ²½ μ¬νμ κ°μ Έμ¬ μ μμ΅λλ€(λλ μμ Gemfile
νμ μ¬μ©νλ κ²½μ° bundle update
). κ·Έλ° λ€μ μ΄κ²μ Guardfile
νμ¬ λμμ΄ λλμ§ νμΈν μ μμ΅λλ€.
UI.options.merge!(flush_seconds: 0, level: :debug, device: 'guard.log')
notification :off
λν guard.log
μ€λ₯λ₯Ό κΈ°λ‘ν©λλ€. (OSXμμ μ 체 λλ ν 리 κ²μμ νΈλ¦¬κ±°ν μ μμ§λ§).
@e2 μκ² κ°μ¬λ립λλ€. λΆννλ μ΄μ΄ μ’μ§ μμμ΅λλ€.
-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'
[...]
Guardfile
μ μ bundle exec guard -n f
μ€λ₯μ μ§μ°μ μκ°νλ κ² κ°λ€. ν
μ€νΈ μ€ν μ€μ Ctrl-Cλ₯Ό λλ₯΄λ©΄ μ¬μ ν νμ± ν둬ννΈμ νΌν©λ STDOUTμ κ³μ μ°λ ν
μ€νΈμ ν¨κ» Pryκ° λΆλ¦¬λ©λλ€. νμ§λ§ κ°μ λ°©μμΌλ‘ λλ©λλ€.
[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 .
λ¨Όμ non-pry μΈν°λν°λ₯Ό λ§μ³€μ΅λλ€. (μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ°©κΈ μ»€λ°μ νΈμνμ΅λλ€.)
λμ§Έ, μ΄ rb-inotify λ²κ·Έκ° λ°μνμ΅λλ€: https://github.com/nex3/rb-inotify/pull/59
μμ μ¬νμ λ§λ€μμ΅λλ€(μμ§ λ³ν©λκ±°λ 릴리μ€λμ§ μμ).
κ·ΈλκΉμ§λ 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μ κ²ν νκ³ , λκΈμ λ¬κ³ , 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 job: no thread, interrupting 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:08AM -0700μμ Justin Etheredgeλ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
@e2 - μλ΄ν΄μ£Όμ μ κ°μ¬ν©λλ€. μ΄λ²μ£Όλ μμμΈλ‘ λ°λΉ΄μ΅λλ€. 곧 PRμ μμ±νκ² μ΅λλ€.
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ νμΈνμΈμ.
https://github.com/guard/guard/issues/842#issuecomment -239132345
μ£μ‘ν©λλ€. λλ μ΄κ²μ μμ§λ μμ§ λͺ»νκ³ μμ΅λλ€. κ·Έκ²μ μ΅κ·Όμ 묻ν λ΄ λͺ©λ‘μ μμ΅λλ€. μμ§ νλ €κ³ νλλ° μκ°λ³΄λ€ μκ°μ΄ μ€λ 걸리λ€μ.
λλ 묻νλ€. ν¨μΉκ° μλ£λκ³ μΆμλκΈ°λ₯Ό λ°λλλ€.
κ΄λ ¨μ΄ μλμ§ νμ€νμ§ μμ§λ§ RSpec μ€μ CTRL-Cλ₯Ό λλ₯΄λ©΄ λ€μ pryμ λΉ μ§μ§λ§ κ°λλ λ€μλ μ무 κ²λ μ€ννμ§ μμ΅λλ€. λλ²κΉ μ λ§μ΄ μλνμ§ μμμ΅λλ€. λμμ λ²λ€ μ€νμ μ 무μ κ΄κ³μμ΄ λμΌν©λλ€. μμμ μ§μ ν λΆκΈ°λ‘ μ€νμ μλνλλ° RSpecμ μ€μ§ν ν κ°λκ° μ’ λ£λλ μμΉμ μ°¨μ΄κ° μμμ΅λλ€.
μ΄λ€ μμ΄λμ΄λΌλ? μ΄κ²κ³Ό κ΄λ ¨μ΄ μμ΅λκΉ? μ΄μ λν΄ μ¦κ°μ μΈ μμ΄λμ΄κ° μλ κ²½μ° λ΄λΆλ₯Ό νν€μ³ λλ¦¬κ² μ΅λλ€. μ°λ¦¬λ λλ¦° μ¬μμ λ§μ΄ κ°μ§κ³ μμΌλ©° μ€κ°μ μ¬μμ μ€μ§ν μ μμΌλ©΄ λ§μ μκ°μ μ μ½ν μ μμ΅λλ€. :)
MacOs Sierraμμλ μ΄ λ¬Έμ κ° λ°μν©λλ€.
ν μ€νΈλ₯Ό μ·¨μνλ©΄ νμΌμ λν λ€μ λ³κ²½ μ¬νμ΄ ν μ€νΈλ₯Ό μ€ννμ§ μμ΅λλ€. μμ²μ λ©μΆ₯λλ€.
κ°μ λ¬Έμ κ° μμ΅λλ€. μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
κ°μ λ¬Έμ κ° μμ΅λλ€. macOS μΉ΄ν리λ μ¬μ©.
κ°μ₯ μ μ©ν λκΈ
κ΄λ ¨μ΄ μλμ§ νμ€νμ§ μμ§λ§ RSpec μ€μ CTRL-Cλ₯Ό λλ₯΄λ©΄ λ€μ pryμ λΉ μ§μ§λ§ κ°λλ λ€μλ μ무 κ²λ μ€ννμ§ μμ΅λλ€. λλ²κΉ μ λ§μ΄ μλνμ§ μμμ΅λλ€. λμμ λ²λ€ μ€νμ μ 무μ κ΄κ³μμ΄ λμΌν©λλ€. μμμ μ§μ ν λΆκΈ°λ‘ μ€νμ μλνλλ° RSpecμ μ€μ§ν ν κ°λκ° μ’ λ£λλ μμΉμ μ°¨μ΄κ° μμμ΅λλ€.
μ΄λ€ μμ΄λμ΄λΌλ? μ΄κ²κ³Ό κ΄λ ¨μ΄ μμ΅λκΉ? μ΄μ λν΄ μ¦κ°μ μΈ μμ΄λμ΄κ° μλ κ²½μ° λ΄λΆλ₯Ό νν€μ³ λλ¦¬κ² μ΅λλ€. μ°λ¦¬λ λλ¦° μ¬μμ λ§μ΄ κ°μ§κ³ μμΌλ©° μ€κ°μ μ¬μμ μ€μ§ν μ μμΌλ©΄ λ§μ μκ°μ μ μ½ν μ μμ΅λλ€. :)