2013-08-05 5 views

Répondre

8

Ceci est le résultat du débogueur Ruby ayant différentes règles d'analyse de l'interpréteur Ruby. En fait, le débogueur Ruby standard, appelé depuis irb ou la commande ruby présente ce même comportement. La solution, cependant, est simple: créer une chaîne littérale consistant en un seul point-virgule, échapper à tout avec une barre oblique inverse:

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

Il est important de noter que l'analyseur de ligne de commande du débogueur Ruby est pas la même que l'analyseur utilisé par le irb ou ruby interprète: il est conçu autour de commandes de débogage d'analyse tel que backtrace, break etc. et pas pour l'analyse du langage Ruby (avec des extensions en forme de coquille dans le cas de irb). Il a un support limité pour évaluer les expressions Ruby (ou Ruby). Ceci est, bien sûr, crucial pour le débogage efficace des programmes Ruby. Cependant, vous ne devriez pas vous attendre à pouvoir analyser tout ce qui irb ou la commande ruby elle-même serait en mesure d'analyser ou d'analyser les choses exactement de la même manière. Dans certains cas, comme cela, il peut gérer certaines expressions mais elles doivent être échappées sous réserve des règles d'analyse du débogueur par opposition au langage Ruby lui-même.

La console Rails est construit au-dessus de irb et est donc une coquille Ruby et respecte les règles d'analyse syntaxique du langage Ruby comme irb et ruby.

+0

J'ai eu le même problème en utilisant gsub ('\;', ',') - l'interprète a fait une chose, l'invite de débogage en a fait une autre – Mitch

Questions connexes