Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails控制台在编辑文本时运行速度非常慢_Ruby On Rails_Ruby_Console - Fatal编程技术网

Ruby on rails Rails控制台在编辑文本时运行速度非常慢

Ruby on rails Rails控制台在编辑文本时运行速度非常慢,ruby-on-rails,ruby,console,Ruby On Rails,Ruby,Console,在我的一个rails应用程序中,当我粘贴文本、键入文本,尤其是删除文本时,控制台开始运行得非常慢。我可以在顶部看到irb使用了大量的cpu。但我不知道如何进一步诊断这个问题。这是几周前开始的。我想知道它是否可能与readline/wirble有关?这两个我都用 我刚刚在另一个应用程序中尝试了它,粘贴在一块文本中,但它看起来同样糟糕——文本以每秒一个字符的速度出现!也许我的命令行历史记录已经满了?如何删除它?对于rails控制台,而不是我的bash命令行历史记录 谢谢你的建议-max 编辑-抱歉,

在我的一个rails应用程序中,当我粘贴文本、键入文本,尤其是删除文本时,控制台开始运行得非常慢。我可以在顶部看到irb使用了大量的cpu。但我不知道如何进一步诊断这个问题。这是几周前开始的。我想知道它是否可能与readline/wirble有关?这两个我都用

我刚刚在另一个应用程序中尝试了它,粘贴在一块文本中,但它看起来同样糟糕——文本以每秒一个字符的速度出现!也许我的命令行历史记录已经满了?如何删除它?对于rails控制台,而不是我的bash命令行历史记录

谢谢你的建议-max

编辑-抱歉,应该提供一些系统详细信息。给你:

System - Ubuntu 10.04
Ruby version - ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]
我刚试过简单的irb,我也有同样的问题。它甚至可能更慢,在我粘贴测试它的文本块的中间,它几乎停止了

我已经重新启动了很多次我的笔记本电脑电池都没电了,所以每次拔下电源插头我都要重新启动

我不在虚拟机里

我最近开始使用RVM ruby版本管理器,它似乎与此一致,尽管这可能只是巧合。不过,有问题的控制台使用的是系统ruby,而不是rvm

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


FWIW@fl00r建议的修复确实有效。对我来说,这一新行为似乎与安装雪豹10.6.7更新相关。它发生在IRB和Rails控制台中

另一件似乎对我有效的事情是确保粘贴测试的最后一行包含一个裸体换行符


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

似乎是rvm的readline导致了速度变慢,请将这一行放在~/.irbrc中:

IRB.conf[:USE_READLINE] = false
现在试着在irb上粘贴一些东西。它快吗?好!

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

# 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

别忘了从irbrc中编辑出IRB.conf行。

我也在OSX上看到了它@fl00r的修复程序可以在粘贴尝试粘贴时点击任意键@JESV修复程序可以工作并且是永久性的。

简单地使用readline对我没有帮助;libreadline似乎存在更深层次的问题,至少在OSX 10.7上是如此,在OSX 10.7中,select系统调用在返回之前等待超时过期,即使有可用数据

我的黑客解决了这个麻烦,是:

cd $rvm_path/src/readline-6.2
vi config.h
(change the line "#define HAVE_SELECT" -> #undef HAVE_SELECT)
make install

我在Ubuntu12.04上使用REE遇到了同样的问题,并尝试了这里列出的所有解决方案,但没有成功。我的最终工作解决方案是:

apt获取删除libreadline6开发 apt get安装libreadline-gplv2-dev rvm拆卸1.8.6 rvm安装1.8.6
问题似乎是与libreadline6-dev的轻微不兼容。当机器上存在libreadline6-dev时,将在编译Ruby时使用它,问题就会出现。无论编译ruby时传递了-with readline dir选项,都会发生这种情况。不幸的是,在最新版本的Ubuntu中,没有libreadline5-dev,但有libreadline-gplv2-dev。

在我的Mac上,文本显示得非常慢,但如果我按下任何键,它都会立即显示出来。试试看这在普通irb中也会发生吗?@Max-你没有说你使用的是什么操作系统或版本,但我会从命令行的普通ps aux开始,看看工作集中有什么。或者重新启动,看看问题是否消失。如果你在Mac上,观察Mac活动监视器可能会给你一些线索——观察cpu和/或磁盘活动。您是否在虚拟机中工作?我是,并且发现我的主机操作系统中的进程,即FireFox的附加组件或扩展,会消耗CPU周期。这会导致我的虚拟机运行缓慢。@Rein、@Steve、@Tass,请参见编辑到OPhi rantler。我用的是ubuntu,不是mac。我没有做任何升级。此外,此问题不仅在粘贴文本时出现,在正常键入和删除字符时也会出现/它可以工作,但现在我失去了使用arrow up执行以前命令的能力。。。ruby-1.8.7-p371的配置脚本无法识别任何以某种方式解决readline dir问题的修复程序,因此我必须使用jordoh的解决方案使ruby 1.8.7使用libreadline 5.2。谢谢。这是唯一一个在OSX10.7Lion上对我有效的修复程序。同样的,在ree上使用Ubuntu12.04。jesvs的修正对我来说没有任何改变。一些运行比Oneiric更早版本的Ubuntu的额外细节
cd $rvm_path/src/readline-6.2
vi config.h
(change the line "#define HAVE_SELECT" -> #undef HAVE_SELECT)
make install