我学习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
答案 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}}。