Frage

Wenn ich eine mehrzeilige Anweisung in der Rails 3.0.1 Konsole auszuführen, geben Sie drücken nicht wirklich die Anweisung ausgeführt werden. Stattdessen geht es auf eine neue Konsolenlinie, und der Cursor nach rechts Tabbed wurde. Dann muss ich eine Basislinie (wie p "hey") laufen, und dann die mehrzeiligen Anweisung ausgeführt wird.

ruby-1.9.2-p0 > images = Image.all;images.each do |im|; if im.imagestore_width.blank?;im.save;end;
ruby-1.9.2-p0 >     p "hey"

Ich habe für eine Weile es so tun, und es arbeitet in Ordnung. Aber jetzt habe ich ein Problem in der Konsole bekam und es könnten verwandt sein. Wenn ich lief den obigen Code, statt es, wie es funktioniert normalerweise der Fall ist, ging es nur um eine neue Konsolenlinie mit einem? hinzugefügt

ruby-1.9.2-p0 > images = Image.all;images.each do |im|; if im.imagestore_width.blank?;im.save;end;
ruby-1.9.2-p0 >     p "hey"
ruby-1.9.2-p0 ?>

Wenn es dies tut, kann ich nicht die Konsole verlassen

ruby-1.9.2-p0 ?>  exit
ruby-1.9.2-p0 ?>  ^C

beziehen sich diese Probleme? Wie kann ich sie lösen?

War es hilfreich?

Lösung

In der Zeile:

images = Image.all;images.each do |im|; if im.imagestore_width.blank?;im.save;end;

Sie haben eine end die if zu schließen, aber keine end den do Block des each zu schließen.

Aus diesem Grunde ist die Konsole der Abfrage, um weitere Eingabe wird erneut angezeigt, bevor Sie Ihre Anweisungen ausgeführt werden.

Versuchen Sie:

images = Image.all;images.each do |im|; if im.imagestore_width.blank?;im.save;end;end

Beachten Sie, werden Sie das gleiche Verhalten mit Klammern sehen. irb oder console wird nicht ausgeführt, bis die Klammern z balancieren.

irb(main):010:0> (3 *
irb(main):011:1* (2 + 1)
irb(main):012:1> )
=> 9

Andere Tipps

Keine Ahnung, was los ist mit irb / console aber Ihr Ruby-Code könnte viel schöner aussehen:

images = Image.all.each { |im| im.save if im.imagestore_width.blank? }

Der allgemeine Konsens ist, zu verwenden {} anstatt do / end für Einleitungs-Blöcke in Ruby.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top