当我在Rails 3.0.1控制台中运行多行语句时,按ENTER实际上不会运行该语句。取而代之的是,它进入了一个新的控制台线,并且光标已向右侧列出。然后我必须运行一条基本行(例如 p "hey"),然后将运行多行语句。

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"

我一直这样做了一段时间,而且工作还不错。但是现在我在控制台上遇到了问题,可能是相关的。当我运行上述代码时,它并没有像往常一样工作,而只是使用A的新控制台行?添加

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

当这样做时,我无法退出控制台

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

这些问题有关吗?我该如何修复它们?

有帮助吗?

解决方案

在线:

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

你有一个 end 关闭 if 但不是 end 关闭 do 街区 each.

这就是为什么控制台在执行语句之前重新播放提示提示的原因。

尝试:

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

请注意,您会看到括号中相同的行为。 irb 或者 console 直到支架平衡例如

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

其他提示

dunno IRB/控制台有什么问题,但是您的Ruby代码看起来更好:

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

一般共识是使用{}而不是Ruby中的单行块DO/End。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top