Ruby 脚本如何检测它是否由交互式 shell 触发?

How can a Ruby script detect if it was triggered by an interactive shell?

我有一个 Ruby 脚本,它通常作为 cron 作业启动,但有时从命令行使用。我想显示一些仅与后一种情况相关的更新文本,以显示进度,但不值得记录。

Ruby 脚本检测以下条件的安全且惯用的方法是什么?

检查 STDIN 是否为“TTY”(字面意思 teletypewriter) with IO#isatty

$ ruby -e 'puts STDIN.isatty'
true
$ echo "no" | ruby -e 'puts STDIN.isatty'
false