Как мне использовать (n) curses в Ruby? - PullRequest
42 голосов
/ 04 августа 2008

Я хотел бы создать индикатор выполнения, чтобы указать состояние пакетного задания в Ruby.

Я прочитал учебники / библиотеки по использованию (n) curses , ни один из которых не был особенно полезен при объяснении того, как создать «анимированный» индикатор выполнения в терминале или использование проклятий с Ruby.

Мне уже известно об использовании отдельного потока для отслеживания хода выполнения заданий, я просто не знаю, как приступить к рисованию индикатора выполнения.


Обновление

ProgressBar класс был невероятно прост, отлично решил мою проблему.

Ответы [ 4 ]

19 голосов
/ 04 августа 2008

Вы можете получить некоторые идеи реализации из библиотеки Ruby / ProgressBar , которая генерирует текстовые индикаторы выполнения. Я наткнулся на него пару месяцев назад, но не использовал его.

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

Очень поздний ответ и извините за саморекламу, но я создал библиотеку , чтобы показать прогресс в терминале.

4 голосов
/ 04 августа 2008

Лично я думаю, что проклятия в этом случае излишни. Хотя библиотека curses хороша (и я часто ее использую), это PITA, которую нужно переучивать каждый раз, когда она мне не нужна в течение 12 месяцев, что должно быть признаком плохого дизайна интерфейса.

Если по какой-то причине вы не можете продолжить работу с , индикатор выполнения lib Джои предложил свернуть свое собственное и выпустить его под довольно бесплатной лицензией для мгновенного признания:)

2 голосов
/ 04 августа 2008

На окнах curses работает «из коробки», ncurses - нет, и для индикатора выполнения достаточно проклятий. Так что используйте проклятия вместо ncurses.

Кроме того, и curses, и ncurses являются тонкими оболочками вокруг библиотеки c - это означает, что вам на самом деле не нужны учебники по Ruby.

Однако на сайте для PickAxe вы можете скачать все примеры кода для книги. Файл "ex1423.rb" содержит демонстрационную программу curses с игрой в понг, которая должна дать вам много материала для продолжения.

...