Ruby,哪个异常最好处理未设置的环境变量?

JP *_*shy 8 ruby shell environment

我编写的脚本在启动时运行并要求设置一个环境变量,但Ruby的异常中哪一个最好?我使用过LoadError,我只想尽可能地描述并遵循适当的约定.

其次,除了检查它的长度之外,我找不到另一种方法来查看是否设置了环境变量,但这看起来并不那么优雅.

begin
  raise LoadError if ENV['FOO'].to_s.length == 0
  system "open http://example.com/" + ENV['FOO']
rescue Exception => e
  puts "=> #{e} FOO environment variable not set"
end
Run Code Online (Sandbox Code Playgroud)

Dor*_*ian 13

你可以这样做:

ENV['SECRET_KEY_XXYY'] || raise('no SECRET_KEY_XXYY provided')
Run Code Online (Sandbox Code Playgroud)


ctc*_*rry 7

根据LoadError文档,文档应该用于'require'有问题的时候.我认为更合适的方法是子类化StandardError并制作适合您使用的方法.如果这看起来有点多,我会StandardError用一个描述性的消息.


der*_*sm2 5

可以使用ENV.fetch('FOO')如果找不到,则会引发 KeyError 。