从Ruby + rest客户端退出代码

时间:2015-03-13 07:07:24

标签: ruby

我学习ruby并使用restsclient进行播放我已经对代码进行了测试,并且我希望返回1 / false。我似乎无法使其发挥作用。

n@lap-jta102:~/tsamcode$ ./get.rb
n@lap-jta102:~/tsamcode$ echo $?
0 

#!/usr/bin/env ruby

require 'rest_client'
require 'json'

begin
response = RestClient.get("https://admin:admin@172.16.210.10/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 个答案:

答案 0 :(得分: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,这是一个出于这个原因的错误做法,它可以捕捉到错误的东西,让你感到困惑),return false永远不会执行(因此永远不会引起错误){。{1}}。