ruby能分辨出它是从交互式ehell还是cron调用的吗?
当我手动运行rake任务时,我想让Rails.logger记录到STDOUT。 但如果rake任务由cron作业运行,则不会。有没有办法找出rake任务是如何开始的ruby能分辨出它是从交互式ehell还是cron调用的吗?,ruby,rake,command-line-interface,Ruby,Rake,Command Line Interface,当我手动运行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 如果$st
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
与终端设备(即交互用户)关联,则返回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
一点也不奇怪
它应该工作。非常感谢。你能给我一个答案,这样我就可以把它作为解决方案了吗?