2013-08-05 16 views
6

yılında "sonlandırılmamış dize dosyasının sonuna karşılamaktadır", sadece saatler içine bu tip hata:Dize rubymine ayıklayıcıya olarak rubymine

"unterminated string meets end of file" 

Neden bu? Rails konsolunda olmaz ve anlatabildiğim kadarıyla RubyMine ile hiçbir ilgisi yoktur.

cevap

8

Bu, Ruby yorumlayıcısından farklı ayrıştırma kurallarına sahip Ruby hata ayıklayıcısının sonucudur. Aslında, irb veya ruby komutundan çağrılan normal Ruby hata ayıklayıcısı, bu davranışı gösterir. Sadece tek bir noktalı virgül oluşan edebi bir dize oluşturmak ters eğik çizgi bunu kaçış:

$ irb 
> require 'debugger' 
=> true 
> debugger 
(rdb:1) ';' 
*** SyntaxError Exception: /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/irb/context.rb:166: unterminated string meets end of file 
(rdb:1) '\;' 
";" 

O Ruby ayıklayıcı komut satırı ayrıştırıcı değil olduğuna dikkat etmek önemlidir geçici çözüm, ancak, basittir irb veya ruby yorumlayıcı tarafından kullanılan ayrıştırıcı aynı: bu ayrıştırma ayıklayıcı komutlarının tasarlanmıştır (irb durumunda kabuk benzeri uzantılar ile) Ruby dil ayrıştırma gibi backtrace vb break ve değildir. Ruby (veya Ruby tarzı) ifadelerini değerlendirmek için sınırlı bir desteğe sahiptir. Bu elbette Ruby programlarının etkin hata ayıklaması için çok önemlidir. Ancak, irb veya ruby komutunun kendisinin her şeyi aynı şekilde ayrıştırması veya ayrıştırması için her şeyi ayrıştırmasını beklememelisiniz. Bazı durumlarda, bunun gibi, belirli ifadeleri işleyebilir, ancak Ruby'nin kendisinin aksine hata ayıklayıcısını ayrıştırma kurallarına tabi tutmaları gerekir.

Raylar konsol irb üzerine inşa ve böylece bir Ruby kabuk ve sadece irb ve ruby gibi Yakut dilinin ayrıştırma kurallarına saygılı olduğunu.

+0

Aynı problemi gsub ('\;', ',') kullanarak yaptım - yorumlayıcı bir şey yaptı, hata ayıklama istemi başka bir şey yaptı – Mitch

İlgili konular