2011-04-11 119 views
14

在我的一個rails應用程序中,當我粘貼文本,鍵入和(特別是)刪除文本時,控制檯開始運行速度非常緩慢。我可以看到irb使用了很多cpu。但我不知道如何進一步診斷這個問題。它幾個星期前剛剛開始發生。我想知道它是否可能與readline/wirble有關?我使用這兩個。編輯文本時Rails控制檯運行速度非常慢

我剛剛在另一個應用程序中嘗試了它,粘貼在一個文本塊中,它看起來同樣糟糕 - 文本以每秒一個字符的速度出現!也許我的命令行歷史已經填滿了什麼?我如何刪除它? (用於軌道控制檯,不是我的bash命令行歷史)

感謝您的任何意見 - 最大

編輯 - 對不起,應該已經提供了一些系統的詳細信息。在這裏你去:

System - Ubuntu 10.04 
Ruby version - ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux] 

我只是嘗試普通的irb和我有同樣的問題。它甚至可能會慢一點,它幾乎在我粘貼的文本塊中途停下來測試它。

我已經重新啓動很多次(我的筆記本電腦電池很麻煩,所以我不得不重新啓動每次我拔掉它)。

我不在vm中。

我最近開始使用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 
+5

在我的Mac上,文字顯示速度非常慢,但如果按任意鍵,它會一次顯示。試試吧 – fl00r 2011-04-11 17:04:30

+0

這是否也發生在普通的irb上呢? – 2011-04-11 17:13:35

+0

@Max - 你沒有說你使用的是什麼操作系統或版本,但是我會從命令行開始一個普通的ps aux來查看工作集中的內容。或者只是重新啓動,看看問題是否消失。觀看Mac活動監視器(如果您在Mac上)可能會給您一些線索 - 觀察cpu和/或觀看磁盤活動。 – 2011-04-11 17:37:40

回答

0

FWIW通過@ fl00r建議確實工作的修補程序。對我而言,這種新行爲似乎與安裝Snow Leopard 10.6.7更新相關。它發生在IRB和Rails Console中。

另一件似乎適用於我的工作是確保粘貼測試的最後一行包含「裸體」換行符。

這絕對是新的行爲,這是非常煩人的。

+0

hi rantler。我使用的是Ubuntu,而不是Mac。我沒有做任何升級。此外,這個問題不僅發生在粘貼文本,而且發生在正常的鍵入和刪除字符。 :/ – 2011-04-26 08:29:55

17

好像RVM的readline的原因造成的緩慢,把這一行放在〜/ .irbrc:

IRB.conf[:USE_READLINE] = false 

現在試着貼在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 

不要忘了從irbrc中編輯IRB.conf行。

+2

rvm pkg install readline – ktec 2011-10-27 15:18:52

+0

它可行,但現在我失去了使用箭頭執行先前命令的不穩定性......任何修復解決了這個問題? – iwiznia 2011-12-15 11:20:04

+0

不知何故,--with-readline-dir不能被ruby-1.8.7-p371的配置腳本識別,所以我必須使用jordoh的解決方案來讓ruby 1.8.7使用libreadline 5.2。 – 2012-10-24 23:37:08

0

我也在OS X上看到它。 @ fl00r的修復工作(在粘貼嘗試粘貼時按任意鍵)。@ jesvs修復工作並且是永久性的。

4

簡單地使用readline對我沒有幫助; libreadline似乎有一個更深的問題,至少在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 
+0

謝謝。這是OS X 10.7 Lion爲我工作的唯一修復程序。 – 2012-03-01 21:05:27

+0

同樣在這裏使用Ubuntu 12.04與ree。 jesvs'fix對我沒有任何幫助。 – 2012-05-12 17:53:56

3

我遇到了同樣的問題,用在Ubuntu 12.04 REE,並試圖在這裏列出的沒有任何成功的所有解決方案。對我來說,最終的工作液:

  1. apt-get的刪除libreadline6-dev的
  2. 的apt-get安裝libreadline-GPLv2的-dev的
  3. RVM刪除1.8.6
  4. RVM安裝1.8.6

該問題似乎與libreadline6-dev存在較小的不兼容性。當libreadline6-dev出現在機器上時,它將在編譯Ruby時使用,並且會發生問題。無論編譯ruby時傳遞的--with-readline-dir選項如何,都會發生這種情況。不幸的是,在最新版本的Ubuntu中,沒有libreadline5-dev,但是有libreadline-gplv2-dev。

+0

針對那些比Oneiric更早運行的Ubuntu版本的其他詳細信息http://www.williambharding.com/blog/rails/fix-irb-pasting-is-super-slow-typing-in-ruby-debugger-has-lag / – wbharding 2012-05-30 01:22:47

相關問題