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 中。
似乎对我有用的另一件事是确保粘贴测试的最后一行包含“裸”换行符。
这绝对是一种新行为,而且非常烦人。