6

当我键入大型 ActiveRecord 查询时,在完成查询之前,线路中断,我什至无法正确读取或键入命令。我正在使用 ubuntu。任何解决方案?

4

4 回答 4

8

最后缩小了调整终端大小的问题。通常我最大化终端以输入大命令,因此出现了问题。发现这可以通过处理 SIGWINCH 信号来调整 IRB 的大小来解决。在下面的解决方案中,我也在调整 Hirb 的大小。

将以下行添加到 ~/.irbrc (如果不存在则创建一个):

Signal.trap('SIGWINCH', proc { y, x = `stty size`.split.map(&:to_i); Hirb::View.resize(x, y) if defined? Hirb } )
于 2012-08-24T11:11:54.357 回答
3

更通用的方法是\在行尾使用 a 。

使用“肯尼格兰特”的相同示例

ruby> User.very.long.chain.of.arel.commands. \
      where('thing = ?', 4).very.long.chain.of.arel.commands

最后一行不应有任何结尾\,然后将执行整个命令。

于 2012-08-24T08:12:49.773 回答
1

我注意到与 irb 相同的错误,rails 控制台默认使用 irb。这就是我使用 pry 的原因,在这里查看如何使用 rails 设置 pry。

于 2012-08-24T08:13:10.100 回答
0

如果您的查询是这样的:

rails c
ruby> User.very.long.chain.of.arel.commands.where('thing = ?',4).very.long.chain.of.arel.commands

你应该能够做到这一点:

ruby> User.very.long.chain.of.arel.commands.where('thing = ?',
          4).very.long.chain.of.arel.commands

并将其拆分为条件内的任何逗号,然后当您最后按回车键时,它将执行。

于 2012-08-24T08:05:11.997 回答