2016-01-07 27 views
0

我得到了修复webistrano安装的工作,现在我陷入了收到一个收据的情况,其中在从ruby 1.8更新到ruby 1.9.3根据其他变量在Ruby中的存在赋值1.9

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的配置:: ::命名空间::命名空间:0x000000032a6040 >

第一种情况永远不会达到。该脚本始终转到其他情况 - 即使var_one包含一个字符串。

我该如何解决?

+0

'var_to_be_used =(defined?var_one)? var_one:var_two' –

+0

有相同的效果 – fragmentedreality

+0

尝试'var_one.nil? ? var_two:var_one' –

回答

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'