在Ruby on Travis CI中检测环境变量

时间:2017-06-17 10:14:28

标签: ruby travis-ci

我有一组dotfiles,我试图在Travis CI上测试。

dotfiles的某些元素我不想在Travis上测试(比如安装Homebrew应用程序)。为了检测我是否在Travis,我正在使用以下内容:

if defined?($TRAVIS) && $TRAVIS != ''
  $TEST_ENV = true
else
  $TEST_ENV = false
end

print "TEST ENV: " + $TEST_ENV.to_s

我检测到Travis环境变量,然后在控制台中回显结果。

但是,我一直将$TEST_ENV作为false并且无法解决原因。

2 个答案:

答案 0 :(得分:2)

$TRAVIS不是环境变量,它是一个全局变量。环境变量如下所示:

ENV['TRAVIS']

答案 1 :(得分:1)

在您的代码中, $ TRAVIS 始终未定义

您的代码存在许多问题。其中包括:

  1. $ TRAVIS 是一个Ruby全局,而不是环境变量。
  2. 永远不会检查环境,因为您没有调用ENV::[]
  3. 在某些情况下,&&可能绑得太紧。 &&and之间的差异在很大程度上是优先考虑的,因此您应该使用括号分隔多个条件,除非您确定解析器将会看到什么。
  4. 在您当前的代码中,defined? $TRAVIS始终为false。
  5. 要测试环境变量,您只需检查字符串化值,如下所示:

    # Are you sure you need a global variable here? If not, remove the dollar sign.
    $test_env = ENV['TRAVIS'].to_s.empty?
    

    请注意,未设置的环境变量将为nil,因此您需要在#empty之前调用#to_s?如果未设置的变量和空字符串在逻辑上等同于您的用例。否则,您将要显式处理nil。