2015-03-13 57 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