如何获取当前的IO上下文

时间:2013-10-03 11:05:18

标签: ruby io

我想在字符串流式传输到终端时使用某些字符串方法。例如,我想重写String#to_s。我希望在终端上使用ANSI颜色代码传递字符串,而不是将其写入文件。为此,我必须访问当前正在写入的IO。我是否可以访问标识当前读/写上下文的变量?

2 个答案:

答案 0 :(得分:2)

to_s这样的字符串上的方法非常重要,修改它们可能会破坏很多依赖代码。您应该修改String方法,例如IOputs等,而不是修改print方法。您可以为IO的每个子类提供不同的定义例如File(多态)。然后,您不需要识别IO类。

答案 1 :(得分:0)

IO#isatty可能就是你要找的东西。但塞尔吉奥的建议仍然是更好的选择。

More info