Ruby Net / Telnet使用boolean来切换日志记录

| 我试图设置一个布尔变量来切换Net :: Telnet模块中的日志记录路径,即:
telnetdebug = false
telnetlog = false
telnetlogfile = \'/var/log/mcacheMonitor.telnet.log\'

xmr = Net::Telnet.new(\"Host\" => host,
                      \"Timeout\" => 10,
                      \"Prompt\" => /[#]\\z/n,
                      \'Waittime\'   => 0,
                      \'Dump_log\' => telnetdebug ? \"mcmsDebug.log\" : nil,
                      \'Output_log\' => telnetlog ? telnetlogfile : nil)
删除此代码会产生以下错误:
C:/Ruby192/lib/ruby/1.9.1/net/telnet.rb:300:in `initialize\': can\'t convert nil into String (TypeError)
        from C:/Ruby192/lib/ruby/1.9.1/net/telnet.rb:300:in `open\'
        from C:/Ruby192/lib/ruby/1.9.1/net/telnet.rb:300:in `initialize\'
        from mcw.rb:26:in `new\'
        from mcw.rb:26:in `<main>\'
    
已邀请:
        telnet文档正在作弊。它说默认值是nil,但实际上不是。检查参数的哈希是否具有键\'Dump_log \'。如果是这样,则将该值用作文件名。所以这应该工作:
telnet_arguments={\"Host\" => host,
                  \"Timeout\" => 10,
                  \"Prompt\" => /[#]\\z/n,
                  \'Waittime\'   => 0}
telnet_arguments[\'Dump_log\'] = \"mcmsDebug.log\" if telnetdebug
telnet_arguments[\'Output_log\'] = telnetlogfile if telnetlog

xmr = Net::Telnet.new( telnet_arguments )
    

要回复问题请先登录注册