在厨师环境中,对于食谱,我有这些数组:
"envs": ["ci","ui","qa"],
"services": ["service_a","service_b","service_c","service_x"]
Run Code Online (Sandbox Code Playgroud)
在模板文件中我使用了这个:
<% @envs.each do |env| %>
file {
<%
logfiles = ""
@services.each do |service|
logfiles = logfiles + "\"" + "/remotelogs/" + @env + "/" + @service + "_syslog.log\", "
end
logfiles = logfiles.chomp(", ")
%>
path => [<%= logfiles %>]
}
<% end %>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是这样的:
no implicit conversion of nil into String
...
Template Context:
-----------------
on line #7
5: logfiles = ""
6: @services.each do |service|
7: logfiles = logfiles + "\"" + "/remotelogs/" + @env + "/" + @service + "_syslog.log\", "
8: end
9: logfiles = logfiles.chomp(", ")
(erubis):7:in `+'
(erubis):7:in `block (3 levels) in evaluate'
(erubis):6:in `each'
(erubis):6:in `block (2 levels) in evaluate'
(erubis):2:in `each'
(erubis):2:in `block in evaluate'
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?我猜我没有逃脱非常好的引号?
最终结果应该是三行(每个环境一个),并且对于每个行,路径应该具有以下值:
path => ["/remotelogs/ci/service_a_syslog.log", "/remotelogs/ci/service_b_syslog.log", "/remotelogs/ci/service_c_syslog.log", "/remotelogs/ci/service_x_syslog.log"]
Run Code Online (Sandbox Code Playgroud)
在这一行
logfiles = logfiles + "\"" + "/remotelogs/" + @env + "/" + @service + "_syslog.log\", "
Run Code Online (Sandbox Code Playgroud)
应该是env,不是@env.请注意,同样适用于service.这个更好
logfiles += "\"/remotelogs/#{env}/#{service}_syslog.log\", "
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想转义双引号,则可以使用百分比字符串文字:
logfiles += %{"/remotelogs/#{env}/#{service}_syslog.log", }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |