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

时间:2016-01-07 16:04:49

标签: ruby variables conditional local webistrano

我得到了修复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保持我在日志后面得到的值时:

  var_one中的

**值   ***未定义的局部变量或方法`var_two'用于#< Capistrano :: Configuration :: Namespaces :: Namespace:0x000000032a6040>

从未达到第一个案例。脚本总是转到其他情况 - 即使var_one包含字符串。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我用

解决了这个问题
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'