2013-10-21 8 views
22

Wenn Guard in einem Rails 4-Projekt mit Guard-rspec ausgeführt wird, sehe ich sporadisch den folgenden Fehler beim Öffnen/Schließen von Dateien in Vim. Ich habe versucht, Guard-, Guard-Rspec-, PRY- und andere Bibliotheken ohne Glück zu aktualisieren/herunterzustufen.Guard verursacht "Fehler: kann Zeichenfolge nicht ändern; vorübergehend gesperrt"

  • Rubin 2.0.0p247 (2013.06.27 Revision 41674) [x86_64-Linux]
  • Bündler Version 1.3.5
  • Schutz Version 2.1.1

Unten ist die stacktrace ich sehe alle paar Testläufe:

Error: can't modify string; temporarily locked 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:624:in `readline' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:624:in `block in readline' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:564:in `handle_read_errors' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:609:in `readline' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:384:in `retrieve_line' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:301:in `block in r' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:298:in `loop' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:298:in `r' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:276:in `re' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:254:in `rep' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:234:in `block (3 levels) in repl' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:232:in `loop' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:232:in `block (2 levels) in repl' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:231:in `catch' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:231:in `block in repl' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:230:in `catch' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_instance.rb:230:in `repl' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.2/lib/pry/pry_class.rb:170:in `start' 
/home/charles/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/guard-2.1.1/lib/guard/interactor.rb:133:in `block in start' 
[1] Specs guard(main)> 
+0

Ich erlebe genau dasselbe. Ich bin auf RVM (1.24.4). Und Ruby 2.0.0p353 (2013-11-22 Revision 43784) [x86_64-linux]. Und schlage 0.9.14. Und Schienen 3.2.14. Und Ubuntu 13.10. –

Antwort

16

Hinzufügen des rb-readline Juwel meiner Gemfile das Problem zu beheben scheint.

gem "rb-readline", "~> 0.5.0" 

Meine Vermutung ist die rbenv kompilierte Version von Ruby 2.0.0-S. 247 Readline- Fragen hat, was erklärt, warum der Fehler in pry_instance.rb:624:in 'readline' auftritt. Das rb-readline-Projekt ist eine reine Ruby-Implementierung der readline-Bibliothek und scheint das Problem zu lindern.

Es könnte eine bessere Lösung geben, die das Neukompilieren von Ruby beinhaltet, aber ich habe es nicht gefunden.

+1

Ich weiß nicht wie es euch geht, aber die Verwendung von rb-readline schraubt meine 'hebelnde' Umgebung komplett um (d. H. Ausführung von' binding.pry' während der Ausführung von Spezifikationen), also ist es ein Nein. –

+0

@ PawełGościcki Ich auch. Es gibt andere Nebenwirkungen mit der Verwendung von rb-readline, die ich bemerkt habe. So wie die Ausgangs- und Endtasten nicht wie erwartet funktionieren. –

3

Es scheint tatsächlich ein Fehler in Ruby 2.0.0 und 1.9.3 zu sein. Siehe https://bugs.ruby-lang.org/issues/8669

Sein zurückportiert Ruby 2.0.0 in Revision 42216.

+3

Ich bin mir nicht sicher, dass das der Fall ist. Ich benutze Ruby 2.0.0p353 (2013-11-22 Revision 43784) und ich erlebe es immer noch. –

+2

Gleiches Problem mit 2.1.0p0 – gertas

+0

Yup Ich sehe das mit 2.1.0p0 auch. –

0

sind Sie Sublime Text 3 verwendet? Wenn ja, sollten Sie unbedingt check this out!

TLDR: Set "atomic_save": false.