【发布时间】:2015-09-09 16:14:33
【问题描述】:
我有以下连接到主机并获得一些输出的小脚本。
#!/usr/bin/env ruby
require 'net/http'
require 'net/https'
require 'timeout'
serverurl = "http://www.google.com/"
uri = URI(serverurl)
res = Net::HTTP.post_form(uri, 'method' => 'login', 'username' => 'admin', 'password' => 'MySup3rDup3rp@55w0rd')
cookie = res['set-cookie']
if cookie.nil?
puts "No cookie"
end
我想使用一些超时,所以我这样做了:
#!/usr/bin/env ruby
require 'net/http'
require 'net/https'
require 'timeout'
serverurl = "http://www.google.com/"
uri = URI(serverurl)
begin
timeout(10) do
res = Net::HTTP.post_form(uri, 'method' => 'login', 'username' => 'admin', 'password' => 'MySup3rDup3rp@55w0rd')
end
rescue StandardError,Timeout::Error
puts "#{server} Timeout"
exit(1)
end
cookie = res['set-cookie']
if cookie.nil?
puts "No cookie"
end
现在我遇到了一些错误:
test.rb:20:in `<main>': undefined local variable or method `res' for main:Object (NameError)
我不知道为什么,因为类似的测试代码可以正常工作:
require "timeout"
begin
timeout(6) do
sleep
end
#rescue # under ruby >= 1.9 is ok
rescue StandardError,Timeout::Error # workaround for ruby < 1.9
p "I'm sorry, Sir. We couldn't make it, Sir."
end
知道我做错了什么吗?
【问题讨论】:
标签: ruby