2013-08-05 5 views
6

に「終端されていない文字列は、ファイルの終わりを満たしている」だけの時計には、このように入力します。文字列、ルビーマインデバッガではルビーマイン

';' 

または

";" 

を、あなたが取得しますエラー:

"unterminated string meets end of file" 

なぜですか? Railsコンソールでは起こりません。RubyMineとは関係ありませんが、私が知る限りはそうです。

答えて

8

これは、Rubyインタープリタと異なる構文解析ルールを持つRubyデバッガの結果です。実際には、irbまたはrubyコマンドから呼び出された通常のRubyデバッガは、この同じ動作を示します。この問題を回避するには、しかし、簡単です:ちょうどバックスラッシュでエスケープ、単一のセミコロンからなる文字列リテラルを作成するには:

$ 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) '\;' 
";" 

それはRubyのデバッガのコマンドラインパーサがはないことに注意することが重要ですirb又はrubyインタプリタによって使用パーサと同じ:それは解析デバッガコマンドの周りに設計されている(irbの場合にシェル状の拡張子を持つ)Ruby言語を解析するなどbacktraceなどbreakない。 Ruby(またはRubyスタイル)の式を評価するためのサポートは限られています。これは、もちろん、Rubyプログラムの効果的なデバッグには不可欠です。しかし、irbまたはrubyコマンド自体がまったく同じ方法で物事を解析したり解析したりすることができるすべてを解析できるとは期待してはいけません。このような場合には、特定の式を処理することができますが、Ruby言語自体ではなく、デバッガの解析ルールに従ってエスケープする必要があります。

レールコンソールはirbの上に構築され、したがって、Rubyのシェルであり、ちょうどirbrubyなどRuby言語の構文解析ルールを尊重されます。

+0

私はgsub( '\;'、 '、')を使って同じ問題を抱えていました。 – Mitch

関連する問題