编辑文本时,Rails控制台运行速度极慢

Max*_*ams 14 ruby console ruby-on-rails

在我的一个rails应用程序中,当我粘贴文本,键入和(特别是)删除文本时,控制台开始运行得非常慢.我可以在顶部看到irb正在使用大量的cpu.但我不知道如何进一步诊断这个问题.它刚刚开始发生在几个星期前.我想知道它是否可能与readline/wirble相关?我用这两个.

我只是在另一个应用程序中尝试过,粘贴在一个文本块中,看起来同样糟糕 - 文本以每秒一个字符的速率出现!也许我的命令行历史已经填满了什么?我怎么能删除它?(对于rails控制台,而不是我的bash命令行历史记录)

感谢任何建议 - 最多

编辑 - 抱歉,应该提供一些系统详细信息.干得好:

System - Ubuntu 10.04
Ruby version - ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]
Run Code Online (Sandbox Code Playgroud)

我只是尝试了简单的irb,我有同样的问题.它甚至可能更慢,在我粘贴的文本块中途停止测试时,它几乎停了下来.

我重启了很多次(我的笔记本电脑电池已经无法启动,因此无论如何我每次拔掉电源都要重新启动).

我不是一个虚拟机器人.

我最近开始使用RVM(ruby版本管理器),它似乎与此相符,尽管它可能只是巧合.有问题的控制台正在使用系统红宝石发生,但不是rvm.

这是以下输出ps aux | grep irb:

max      12583  0.0  0.0   1756   484 pts/7    S+   Apr11   0:00 sh -c irb  -r irb/completion -r "/home/max/work/rails_apps/millionaire_container/millionaire/config/environment" -r console_app -r console_with_helpers --simple-prompt
max      12584 15.9  2.7  61872 56956 pts/7    S+   Apr11 158:26 irb                                                                                                                                                                                     
max      13981 64.4  0.9  20080 18708 pts/9    R+   09:40  29:51 irb                          
max      14625 21.8  0.6  15020 12628 pts/12   Rl+  10:25   0:20 irb                                             
max      14757  0.0  0.0   3048   804 pts/13   R+   10:27   0:00 grep --color=auto irb
Run Code Online (Sandbox Code Playgroud)

小智 17

似乎rvm的readline导致了缓慢,把这一行放在〜/ .irbrc中:

IRB.conf[:USE_READLINE] = false
Run Code Online (Sandbox Code Playgroud)

现在尝试在irb上粘贴一些东西.它快吗?好!

现在唯一的问题是你已经失去了编辑线条的能力.我们需要修复rvm的readline.

# assuming 1.8.6 is your rvm's default ruby version
rvm package install readline
rvm remove 1.8.6
rvm install 1.8.6 --with-readline-dir=$rvm_path/usr
Run Code Online (Sandbox Code Playgroud)

不要忘记编辑irbrc中的IRB.conf行.


小智 0

FWIW @fl00r 建议的修复确实有效。对我来说,这种新行为似乎与安装 Snow Leopard 10.6.7 更新相关。它发生在 IRB 和 Rails Console 中。

似乎对我有用的另一件事是确保粘贴测试的最后一行包含“裸”换行符。

这绝对是一种新行为,而且非常烦人。