2015-03-13 47 views
1

我学习了ruby并使用restsclient玩它我有以下测试代码,我期待它返回1/false。我似乎无法使其工作。使用Ruby +休息客户端退出代码

[email protected]:~/tsamcode$ ./get.rb 
[email protected]:~/tsamcode$ echo $? 
0 

#!/usr/bin/env ruby 

require 'rest_client' 
require 'json' 

begin 
response = RestClient.get("https://admin:[email protected]/isam/host_records/187.0.0.1/hostnames", :content_type => :json, :accept => :json) 
return true if response.code == 200 
rescue => e 
return false unless response != 200 
end 

回答

1

$?不受return设定,而是由exit。事实上,你的return甚至没有做你的想法。尽量只此:

# one-returner.rb 
return 1 

$ ruby one-returner.rb 
one-returner.rb:1:in `<main>': unexpected return (LocalJumpError) 

你没有得到你的程序中的错误的原因是你的事实毯救援时return true提高(因为你有一个不受限制的rescue,这是一个不好的做法,这个错误正是由于这个原因,它可以捕获一个错误的东西,让你感到困惑),并且由于unlessreturn false从不执行(因此从不会引发错误)。

+0

谢谢你的回答。我发现了退出和退出!我修改了它现在的代码,它在救援后会退出!似乎是在做我期望的,但我想不是这样做的方式。 – LupinDeterd 2015-03-13 19:39:23