作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在创建一个简单的 Chef Recipe ,用于在 VPS 上设置虚拟主机。我通过将 domain
变量传递给 Chef/.erb 模板来创建正确的 .conf 文件,但我也在尝试这样做(简化的代码示例):
node[:domains].each do |domain|
execute 'sudo mkdir -p /var/www/#{domain}/public_html'
end
但是,变量并没有输出到字符串中,命令只是创建一个名为:
/var/www/#{domain}/public_html
那么...是否有一种可接受的方法来使用 Chef 执行命令中循环中的变量 - 或者是我的 Ruby 语法不正常?
最佳答案
尝试将变量注入(inject)字符串时,请使用双引号,而不是单引号。
node [: domains] .each do | domain |
execute "create_dir_#{domain}" do
command "sudo mkdir /var/www/#{domain}/public_html"
end
end
我建议使用 directory资源而不是执行
node [: domains] .each do | domain |
directory "/var/www/#{domain}/public_html" do
recursive true
action :create
end
end
关于ruby - 如何在 Chef/Ruby 执行命令中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932382/
我是一名优秀的程序员,十分优秀!