ruby – puppet模板删除最后一个逗号

前端之家收集整理的这篇文章主要介绍了ruby – puppet模板删除最后一个逗号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下puppet示例模板:
{
  "servers" : [ {
    "port" : 9200,"host" : "localhost","queries" : [
      <% @markets.each do |market| -%>
      {
      "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter" } ],"obj" : "solr/market_<%= market %>:type=queryResultCache,id=org.apache.solr.search.LRUCache","attr" : [ "hits","hitratio" ]
    },<% end -%>
    ],"numQueryThreads" : 2
  } ],}

将它应用于市场= [‘英国’,’FR’,’IT’],我得到以下结果:

{
  "servers" : [ {
    "port" : 9200,"queries" : [
            {
      "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter" } ],"obj" : "solr/market_UK:type=queryResultCache,{
      "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter" } ],"obj" : "solr/market_FR:type=queryResultCache,"obj" : "solr/market_IT:type=queryResultCache,],}

问题是最后一个逗号,这使得它成为无效的solr配置.

而不是应用市场.我可以使用market.map和join(‘,’).
但在这种情况下如何使用地图?

我可以使用如下地图:

<%= @markets.map{ |market| "hello_"+market }.join(',') -%>

这会打印hello_UK,hello_FR,hello_IT(注意我们在hello_IT之后没有逗号),
但我需要这样的东西:

{
  "servers" : [ {
    "port" : 9200,"queries" : [
      <% @markets.map |market| -%>
      {
      "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter" } ],<% }.join(',') -%>
    ],}

这不起作用.

那么,如何让它发挥作用?
或者如何修改我的木偶模板以删除最后一个逗号?

解决方法

这实际上是一个Ruby问题.由于这是一个数组,只需将.each更改为.each_with_index即可.然后,您可以将最终逗号包装在一个检查中,以查看当前索引值是否小于索引的大小.所以
<% @markets.each_with_index |market,i| -%>

然后

}<%= ',' if i < (@markets.size - 1) %>

猜你在找的Ruby相关文章