Pregunta

Al ejecutar una declaración de varias líneas en los rieles 3.0.1 consola, pulsando Enter en realidad no ejecutar la instrucción. En su lugar, se va a una nueva línea de la consola, y el cursor se ha pestañas a la derecha. Entonces tengo que ejecutar una línea básica (como p "hey"), y luego la declaración de varias líneas a correr.

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"

Yo he estado haciendo así durante un tiempo y ha estado trabajando bien. Pero ahora tengo un problema en la consola y que podría estar relacionado. Cuando me encontré con el código anterior, en lugar de hacerlo funcionar como lo hace normalmente, sólo fue a una nueva línea de consola con un? añadido

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 ?>

Cuando se hace esto, no puedo salir de la consola

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

¿Se relacionan estos problemas? ¿Cómo puedo solucionarlo?

¿Fue útil?

Solución

En la línea:

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

Tiene una end para cerrar la if pero no un end para cerrar el bloque do del each.

Esta es la razón por la consola es su nueva presentación visual se le pregunte por más caracteres antes de ejecutar sus estados de cuenta.

Trate:

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

Aviso, verá el mismo comportamiento con los soportes. irb o console no se ejecutará hasta que los soportes se equilibran por ejemplo.

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

Otros consejos

No sé lo que está mal con el IRB / consola, pero su código de rubí podría parecer un montón más bonito:

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

El consenso general es utilizar {} en lugar de do / final de los bloques de una sola línea en rubí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top