根据 ruby 1.9 中是否存在其他变量来分配变量

Assigning a variable based on existence of other variables in ruby 1.9

我得到了修复 webistrano 安装的工作,现在我陷入了这样的境地:我有一张收据,其中在从 ruby 1.8 更新到 ruby 1.9 后以下任务中断。 3

if defined? var_one != nil
  var_to_be_used = var_one
else
  $logger.info(var_one)
  var_to_be_used = var_two
end

我已经确定(通过添加上述日志条目)var_onevar_two 保持预期值。 例如,当我希望 var_one 保留我得到以下日志的值时:

** value in var_one
*** undefined local variable or method `var_two' for #<Capistrano::Configuration::Namespaces::Namespace:0x000000032a6040>

第一种情况永远不会发生。脚本总是转到其他情况 - 即使 var_one 包含一个字符串。

我该如何解决?

我用

解决了
var_to_be_used ||= var_one rescue var_to_be_used ||= var_two rescue nil

通过 var_one.nil? 访问导致再次 undefined local variable or method 'var_one'