本文介绍了Ruby能分辨出它是从交互外壳还是从cron调用的吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我手动运行RAKE任务时,我想让Rails.logger记录到STDOUT。但如果rake任务是由cron作业运行的,则不会。有没有办法找出RAKE任务是如何开始的?
task :my_env => :environment do
if A_USER_IS_WATCHING_ME
Rails.logger = Logger.new(STDOUT)
ActiveRecord::Base.logger = Logger.new(STDOUT)
end
end
推荐答案
$stdout.tty?
如果$stdout
与终端设备(即交互用户)关联,则返回true
,否则返回false
:
# test.rb
if $stdout.tty?
puts "tty"
else
puts "not a tty"
end
来自bash:
$ ruby test.rb
tty
$ ruby test.rb > test.log
$ cat test.log
not a tty
这篇关于Ruby能分辨出它是从交互外壳还是从cron调用的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!