Ruby 仅当存在guard时才检查Chef中的环境变量

Ruby 仅当存在guard时才检查Chef中的环境变量,ruby,chef-infra,chef-recipe,Ruby,Chef Infra,Chef Recipe,我正在尝试向Chef recipe操作添加一个条件保护,以便它仅在设置了某个环境变量(CLEAN\u DB)时运行 结尾前面的那行给我添了麻烦。它给出了以下语法错误: 我尝试了以下所有方法: only-if ENV['CLEAN_DB'] == "create" only-if { ENV['CLEAN_DB'] == "create" } only-if '("#{ENV[\'CLEAN_DB\']}" == "create")' only-if 'if [[ "$CLEAN_DB" == "

我正在尝试向Chef recipe操作添加一个条件保护,以便它仅在设置了某个环境变量(
CLEAN\u DB
)时运行

结尾前面的那行给我添了麻烦。它给出了以下语法错误:

我尝试了以下所有方法:

only-if ENV['CLEAN_DB'] == "create"
only-if { ENV['CLEAN_DB'] == "create" }
only-if '("#{ENV[\'CLEAN_DB\']}" == "create")'
only-if 'if [[ "$CLEAN_DB" == "create" ]] ; then echo 0 ; else echo 1; fi;'
only-if 'if [[ "$CLEAN_DB" == "create" ]] ; then echo 0 ; else echo 1; fi'

它们似乎都不起作用。文档()似乎表明,我所需要的只是一个输出0的shell脚本(在shell中,它给出了条件中字符串文本的错误)或一个Ruby块(如
{}
之间的示例所示)。现在我没有主意了。

如果你拼写正确,那么你至少应该第二次尝试(最后一块)成功了

正确的语法是:

执行“创建数据库”操作
#这里的日志记录没有意义,因为它是在编译时发出的
#Chef::Log.info(“清理/创建数据库”)
命令“psql——文件#{node['sql-directory']}/sql/db_create.sql”
cwd节点['sql-directory']
操作:运行
用户节点['postgresql-user']
仅当{ENV['CLEAN_DB']==“create”}
结束
或者,您可以使用

仅当do ENV['CLEAN\u DB']==“create”结束时

ughh非常感谢!!我讨厌我犯这样的错误:D
...
SyntaxError
-----------
/home/centos/.jenkins/workspace/test1__Deploy/cache/cookbooks/recipes/app_linux.rb:157: syntax error, unexpected end-of-input, expecting keyword_end
...
only-if ENV['CLEAN_DB'] == "create"
only-if { ENV['CLEAN_DB'] == "create" }
only-if '("#{ENV[\'CLEAN_DB\']}" == "create")'
only-if 'if [[ "$CLEAN_DB" == "create" ]] ; then echo 0 ; else echo 1; fi;'
only-if 'if [[ "$CLEAN_DB" == "create" ]] ; then echo 0 ; else echo 1; fi'