如何在Ruby中使用(n)curses?

46
我想创建一个进度条,以指示在Ruby中批处理作业的状态。
我已经阅读了一些关于使用(n)curses的教程/,但没有特别有用的解释如何在终端中创建一个"动画"进度条或者如何使用curses和Ruby。
我已经知道使用单独的线程来监视给定作业的进度,只是不确定如何继续绘制进度条。

更新

ProgressBar类非常简单明了,完美地解决了我的问题。

4个回答

21
你可以从Ruby/ProgressBar库中获取一些实现想法,该库生成文本进度条。我在几个月前偶然发现了它,但并没有使用过。

请注意:截至2012年,Ruby语言中的ncurses实现使用ffi-ncurses gem。Curses已包含在Ruby的STDLIB中。 - shadowbq
1
更新说明:自Ruby 2.1.0(2014年某个时候)起,STDLIB中的curses已被移除并成为了一个gem(https://github.com/ruby/curses)。 - mraaroncruz

4

非常晚的回答,为自我推广而抱歉,但我创建了library以在终端中显示进度。


4

我个人认为在这种情况下使用curses有些过头了。虽然curses库很好用(我自己经常使用它),但每次我12个月没有使用它时,就必须重新学习它,这肯定是一个糟糕的界面设计的标志。

如果由于某种原因你无法使用Joey建议的进度条库,那么自己编写一个并发布一个相当自由的许可证以获得即时的赞誉:)


@MeNoMore,“PITA”不是代码,而是“烦人的事情”的首字母缩写。不要为这样的东西使用代码格式。 - Andrew Barber
@Andrew Barber :) 你让我笑了,我真的不知道PITA是“烦人的事情”,我学到了新东西。在我来自的地方,PITA是完全不同的东西(提示:即使在那里它也不是代码:),你可以谷歌一下),无论如何还是谢谢你。 - CloudyMarble

2
在Windows上,curses可以直接使用,而ncurses则不行。对于进度条来说,curses应该足够了。因此,请使用curses而不是ncurses。
此外,curses和ncurses都是c库的薄包装器 - 这意味着您不需要针对Ruby的特定教程。
但是,在PickAxe网站上,您可以下载本书所有代码示例。文件“ex1423.rb”包含一个curses演示,可以玩乒乓球 - 这应该为您提供了充足的材料来开始。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接