我有一组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
并且无法解决原因。
答案 0 :(得分:2)
$TRAVIS
不是环境变量,它是一个全局变量。环境变量如下所示:
ENV['TRAVIS']
答案 1 :(得分:1)
您的代码存在许多问题。其中包括:
&&
可能绑得太紧。 &&
和and
之间的差异在很大程度上是优先考虑的,因此您应该使用括号分隔多个条件,除非您确定解析器将会看到什么。defined? $TRAVIS
始终为false。要测试环境变量,您只需检查字符串化值,如下所示:
# 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。