Ruby Net / Telnet используют логическое значение для переключения регистрации - PullRequest
0 голосов
/ 24 июня 2011

Я пытаюсь установить логическую переменную для переключения пути регистрации в модуле 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)

BUT этот код выдает следующую ошибку:

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>'

1 Ответ

3 голосов
/ 24 июня 2011

Документация по telnet обман . Он говорит, что по умолчанию ноль, но на самом деле это не так. Хэш аргументов проверяется, если у него есть ключ '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 )
...