現象
rakeタスクでログ出力させるときに
logger = Logger.new(STDOUT)
と書いたら RuboCop::Cop::Style::GlobalStdStream
rubocoopに怒られた。
C: [Correctable] Style/GlobalStdStream: Use $stdout instead of STDOUT.
対応
ドキュメントを読むと
STDOUT/STDERR/STDIN
are constants, and while you can actually reassign (possibly to redirect some stream) constants in Ruby, you'll get an interpreter warning if you do so.
つまり、STDOUTにログを追記していくのって、定数に再割り当てしてるのと同義のようで、インタープリターから警告が出るっぽい。よってグローバル変数 $stdout
を使うほうがベター。
logger = Logger.new($stdout)