Rails консоль работает невероятно медленно при редактировании текста - PullRequest
14 голосов
/ 11 апреля 2011

В одном из моих приложений rails консоль начала работать очень медленно, когда я вставляю текст, печатаю и (особенно) удаляю текст.Вверху видно, что irb использует много процессоров.Но я не знаю, как диагностировать эту проблему дальше.Это только начало происходить пару недель назад.Мне интересно, возможно ли это связано с 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), и, похоже, он совпал с этим, хотя это можетпросто совпадение.Проблемные консоли происходят с использованием системного 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 ]

17 голосов
/ 09 мая 2011

Кажется, что readline rvm вызывает медлительность, поместите эту строку в ваш ~ / .irbrc:

IRB.conf[:USE_READLINE] = false

Теперь попробуйте вставить что-нибудь на irb. Это быстро? Хорошо!

Единственная проблема сейчас в том, что вы потеряли возможность редактировать свои строки. Нам нужно исправить readline 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

Не забудьте отредактировать строку IRB.conf в вашем irbrc.

4 голосов
/ 09 декабря 2011

Простое использование 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
3 голосов
/ 30 мая 2012

Я столкнулся с той же проблемой, используя REE в Ubuntu 12.04, и безуспешно пробовал все перечисленные здесь решения.Последнее рабочее решение для меня было:

  1. apt-get remove libreadline6-dev
  2. apt-get install libreadline-gplv2-dev
  3. rvm remove 1.8.6
  4. rvm install 1.8.6

Проблема заключается в незначительной несовместимости с libreadline6-dev.Когда на компьютере присутствует libreadline6-dev, он будет использоваться при компиляции Ruby, и проблема может возникнуть.Это произойдет независимо от параметров --with-readline-dir, переданных при компиляции ruby.К сожалению, в последней версии Ubuntu нет libreadline5-dev, но есть libreadline-gplv2-dev.

0 голосов
/ 21 мая 2011

Я вижу это и в OS XИсправление @ fl00r работает (нажатие любой клавиши во время вставки.) Исправление @jesvs работает и постоянно

0 голосов
/ 26 апреля 2011

FWIW исправление, предложенное @ fl00r, действительно работает. Для меня это новое поведение, по-видимому, связано с установкой обновления Snow Leopard 10.6.7. Это происходит как в IRB, так и в Rails Console.

Еще одна вещь, которая, кажется, работает для меня, - убедиться, что последняя строка вставленного теста содержит «обнаженный» символ новой строки.

Это определенно новое поведение, и оно очень раздражает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...