Ruby具有BEGIN {}
和END {}
块,以确保它们分别在代码的主要部分之前和之后运行。在END中访问Ruby退出代码
我有以下代码:
BEGIN {
$my_args = ARGV.dup
ARGV.clear
} # clean up 'gets'
# For the truly paranoid in all of us
def self.run_away?
print "You're paranoid. Exit? (Y/n) "
ans = gets.chomp.downcase
if ["no", "n"].include?(ans)
puts "Alright, your call. Let's keep going."
else
puts "EXITING"
log("Exiting at paranoid users request.")
exit 3
end
end
END { } # do stuff here
我有我在我的脚本所定义的错误代码屈指可数。 我希望能够阅读错误代码并根据该代码打印简短说明。例如。 - EXITING - 3: Exit at user request
而不是每次我在我的代码中使用exit
时写一个描述性的字符串。有没有办法在END {}
区块中做到这一点?或者我失踪的其他东西?
编辑/注:我坚持用Ruby 1.8.7
及以下不工作:
(见下文)
BEGIN { puts "BEGIN block!" }
puts "Main block!"
exit 3
END {
puts "END block!"
puts "Current Exception: \n#{$!}"
puts "Current Backtrace: \n#{[email protected]}"
}
输出:
~: $ ./test.rb
BEGIN block!
Main block!
~: $ echo $?
3
~: $
编辑#2 :在我退出之前,我必须定义我的END
区块。由于@Stefan
这真是太棒了,我一定会记住我的周末项目,但我在工作时使用CentOS,并坚持使用1.8.7。我将编辑该问题。谢谢! –
@DevonFinninger为我工作1.8.7 – Stefan
看我的编辑,看看我做了什么。我搞砸了实施? –