Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby能分辨出它是从交互式ehell还是cron调用的吗?_Ruby_Rake_Command Line Interface - Fatal编程技术网

ruby能分辨出它是从交互式ehell还是cron调用的吗?

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

当我手动运行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
与终端设备(即交互用户)关联,则返回
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
一点也不奇怪

它应该工作。非常感谢。你能给我一个答案,这样我就可以把它作为解决方案了吗?